friendarm 6410板子在windows的第一个程序 (下程序,在模拟dos终端编译汇编,C)

李明老师的视频教程
http://v.youku.com/v_show/id_XMjAzMTgzNjcy.html

1接好串口电源,打开超级终端,开关从nandflash启动,上电,任意键进入bootloader提示
键入q退出进入类似shell的界面;
2 输入 loadb 之后 显示ready for binary (kermit) download to 0x50000000
之后点超级终端的发送,发送文件,协议改成kermit 发送编译好的bin文件;
发送完后,输入 go 0x50000000;即运行;

二 在windows在通过cmd即dos模拟终端来编译汇编文件,不用ads的IDE;

将MAKE.EXE 拷到ADS安装目录的ARM\ADSv1_2\Bin中,自己的工程目录(如1-led)下编写
汇编文件如led.s 再新建一个Makefile文件
led.s
AREA led, CODE, READONLY
 
 ENTRY

 ldr r0, =0x7f008800   //led灯在gpk4——gpk7
    gpk地址为0x7f008800
 ldr r1, =0x10000000
 str r1,[r0] 
ledd
 ldr r0, =0x7f008808
 ldr r1, =0x4000
 str r1,[r0]
 bl delay
 
 ldr r0, =0x7f0080a4
 ldr r1, =0x0
 str r1,[r0]
 bl delay 
 b ledd  
delay
 mov r2,#0x100000 
dd 
 sub r2,r2,#1
 cmp r2,#0
 bne dd 
 mov pc,lr 
 b .
 end
Makefile
all:
 armasm led.s -o led.o
 armlink led.o -o led.axf
 fromelf -bin led.axf -o led.bin
 fromelf -c led.axf -o led.txt
 dir *.bin
之后从终端中进入工程目录,make 即可生成.bin文件,可以将其烧进板子;

三 在windows在通过cmd即dos模拟终端来编译C文件,不用ads的IDE;
C语言中程序应该在准备好C环境(__main作用)后跳到main函数执行;
但不在IDE中编译的话,在这编译C文件并不会跳到main函数,而是顺序执行,先执行delay
函数,这不是我们想要的,所以还需要一个start.s的汇编文件来辅助一下;
led.c
void delay(void);
int mymain(void)
{
 volatile int *p = (volatile int *)0x7f008800;
 *p = 0x11110000;
 p = (volatile int  *)0x7f008808;
 while(1)
 {
 
 *p = 0x0;
 
 delay();
 
 *p = 0xf0;
 
 delay();
}
 
 
 return 0;
}
void delay(void)
{
 int i;
 for(i = 0;i<0x1000000;i++)
  ;
}
start.s
 AREA led, CODE, READONLY
 import mymain
 ENTRY
 ;mov sp, #0x50008000  ;r13 fu chu zhi
 
 b mymain
 
 end
Makefile
all:
 armasm start.s -o start.o  //汇编
 armcc -c led.c -o led.o  //预处理 、编译、汇编
 armlink start.o led.o -first start.o -ro-base 0x50000000 -o led.axf // 连接
 fromelf -bin led.axf -o led.bin  //从axf文件中生成bin文件
 fromelf -c led.axf -o led.txt //将axf文件保存成txt文件
 dir *.bin
ADS编译出来的是axf格式
axf/elf文件里面包含了符号表,汇编等。BIN文件是将elf文件中的代码段,
数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。由于elf文件
的信息比较全,所以可以用来以单步跟踪的方式运行。
则也可以生成.bin文件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值