搜索
bottom↓
回复: 6

ARM裸机编程流程

[复制链接]

出0入0汤圆

发表于 2010-11-12 21:01:53 | 显示全部楼层 |阅读模式
大家好!我用的是友善之臂mini2440的板子,现在先打算裸机编程。我的步骤是:用nor flash 方式打开开发板,超级终端里面出现一系列文字,选d (下载),然后打开DNW 用USB下载bin文件进去。我抄了官方的启动代码,用了里面的init.s  ,自己改写了main函数。编译成功了。但是程序烧进去却没有想要的结果。网上查了很久,ADS那里设置应该没有问题了。望高人指教 !!!
下面是简单的点灯函数
#define rGPBCON      (*(volatile unsigned long *)0x56000010)
#define rGPBDAT      (*(volatile unsigned long *)0x56000014)
//#include"2440addr.h"
void Main()

{//int  x;
// rGPBCON = 0x155555|0x01;

    rGPBCON = 0x00005000;    // 设置GPB6为输出口, 位[13:12]=0b01
    rGPBDAT = 0x00000000;    // GPB6输出0,LED2点亮
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-11-12 21:52:31 | 显示全部楼层
你的代码只是点灯,事实上实现这个目的完全用开机默认的配置就能正常运行,也就是说你只需要建个汇编然后从汇编跳转到c就行了

出0入0汤圆

发表于 2010-11-13 00:24:14 | 显示全部楼层
这也算裸机?

出0入0汤圆

发表于 2012-4-13 12:39:56 | 显示全部楼层
我正需要解决这个同样的问题哈。

出0入0汤圆

发表于 2012-4-15 01:06:06 | 显示全部楼层
同问这样的问题,我的QQ也是这样

出0入0汤圆

发表于 2012-4-15 10:37:13 | 显示全部楼层
我觉得楼主ADS那里设置应该有问题,我也是在ADS设置里花了很多时间,你可以下载天嵌的《裸奔三部曲》照着里面附录ADS设置一章来设置,可能解决不了你现在的问题,但肯定能解决潜在的问题。你可以在我的帖子中下载。http://www.ourdev.cn/thread-5462341-1-1.html

出0入0汤圆

发表于 2012-4-18 18:44:20 | 显示全部楼层
本帖最后由 wgyoume 于 2012-4-18 18:51 编辑

还是使用linux下arm-linux-gcc编译好。
crt0.S
@ File:crt0.S
@ 功能:通过它转入C程序
@******************************************************************************      

.text
.global _start
_start:
            ldr     r0, =0x56000010     @ WATCHDOG寄存器地址
            mov     r1, #0x0                     
            str   r1, [r0]              @ 写入0,禁止WATCHDOG,否则CPU会不断重启
            
            ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
                                        @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
            bl      main                @ 调用C程序中的main函数
halt_loop:
            b       halt_loop

led_on_c.c
#define GPBCON      (*(volatile unsigned long *)0x56000010)
#define GPBDAT      (*(volatile unsigned long *)0x56000014)

int main()
{
    GPBCON = 0x00000400;    // 设置GPB5为输出口, 位[11:10]=0b01
    GPBDAT = 0x00000000;    // GPB5输出0,LED1点亮

    return 0;
}
Makefile
led_on_c.bin : crt0.S  led_on_c.c
        arm-none-linux-gnueabi-gcc -g -c -o crt0.o crt0.S
        arm-none-linux-gnueabi-gcc -g -c -o led_on_c.o led_on_c.c
        arm-none-linux-gnueabi-ld -Ttext 0x0000000 -g  crt0.o led_on_c.o -o led_on_c_elf
        arm-none-linux-gnueabi-objcopy -O binary -S led_on_c_elf led_on_c.bin
        arm-none-linux-gnueabi-objdump -D -m arm  led_on_c_elf > led_on_c.dis
clean:
        rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o

适修改后,直接把.bin文件烧写到flash里可以直接运行。强烈推荐一本书:《嵌入式linux应用开发完全手册》韦东山。我现在也正在学习S3C2440裸机编程。希望以后可以多多交流。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 11:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表