板子上的调试--点灯大法


一、WIN下的Makefile
Makefile

asmasm led.s -o led.o  //汇编编译器,将.s源文件编译成目标文件
armlink -ro-base 0x0 -entry 0x0 led.o -o led.axf//连接器,参数1:运行.text段起始地址,基地址,参数2:调试用的入口地址;(可以不要)//.axf可调试的elf文件,带调试信息。
fromelf led.axf -bin -output led.bin//去掉.axf的调试信息,生成裸奔bin文件,在板子上执行用(可直接exec) ;

二、点灯大法(很吊的debuger) my frist program
 3步走:1.IOPMOD:设置gpio的输入输出方向,IO control set output(1)/input(0); 2、3: IOPDATA:直接对LED的管脚赋值 1亮,0灭;
1.IOPMOD
 ;首先是设置 gpio 的输入/输出方向,这个是通过设置
 ;S3C4510B 内部 IO 端口模式寄存器 IOPMOD (地址: 0x03FF5000) 来实现的:
ldr r1, =0x0003FFFF  ;set all 18 gpios' direction to output
ldr r0, =0x03FF5000
str r1,[r0]

2. ;然后就是设置相关的 gpio 输出 1 ,即点亮相连的 led 。
;这个是通过设置 S3C4510B 内部 IO 端口数据寄存器 IOPDATA (地址: 0x03FF5008) 来实现的:
;实现原理上也很简单,led 灯是和 s3c4510 提供的 IO 相连,具体连接方式如下:
;
; hardware connection
; PIO17 PIO04  PIO05  PIO06 (gpio)  ;查datasheet,可以找到置哪位为1既可使对应
 ;下面的led亮。
; D6    D7    D8    D9  (led)  ;
; so output value = 0x00020070 = (0b0000 0000  0000 0010  0000 0000  0111 0000)  ;查DS知,给IO寄存器的这几个位赋1后,即可将相应的gpio置1或0,然后控制led亮或灭。
;

;点亮LED,闪烁
 ldr r1, =0x00020070  ; show led = 1111
loop:
 ldr r0, =0x03FF5008
 str r1,[r0]
 b loop


3.
;熄灭LED
 ldr r1, =0x00000000  ; show led = 0000
loop:
 ldr r0, =0x03FF5008
 str r1,[r0]
 b loop

  通过 ADS 1.2 的编译器,执行编译、链接、得到二进制可执行代码:
 
armasm led_1111.s -o led_1111.o
armlink -ro-base 0x0 -entry 0x0 led_1111.o -o led_1111.axf   //file .axf
fromelf led_1111.axf -bin -output led_1111.bin

    一块自己制作,焊接,调试的板子,能够首先把点灯的程序烧进去运行,看到 led 在
闪烁的时候,至少说明 cpu 和 flash 的连接,焊接都没有问题,晶振也在正常工作。     //晶振??
printf 无法输出之前,led 总是我们最可信赖的 debuger 。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值