终于点亮ARM的第一个LED了。。。

我的ARM开发板买了大概又3个月了,之前一直没能用自己写的代码点亮第一个LED,就一直放着,搞其他东西去了。

国庆放长假,前三天就抽空学习了一下模电和数电,昨天有把ARM开发板拿出来准备再试试看。结果郁闷了,弄了一天,

没有一样是成功的,只有开发板附送的那个demo.bin烧进去可以亮,我自己写的就一直不行,什么启动代码的我又搞不懂,

网上大多资料都是针对那个什么ADS的,汇编代码的格式又不一样,拿过来也编译不了。还有那个dnw和dnw2我一个都不行,

我用的是UBUNTU10.04, DNW还能识别我的USB,但是每次都传输到1%就失败了,而DNW2虽然说不用secbulk.ko,但是

根本识别不了我的USB啊,唉,心都碎了。

今天早上起来,打算回到WINDOWS上用那个ADS来试试看。成功是成功了,但是那个ADS老是自动崩溃,速度奇慢,各种复杂

和恶心,这更加坚定了我抛弃WINDOWS的决心了。于是我又回到了LINUX,发现我忽略了一本经典之作《嵌入式LINUX应用开发完全手册》,

于是我拿出来揣摩了以下,发现里面有直接用汇编点亮LED的代码,省去了所谓的启动代码,于是我按着自己的开发板的资料修改了以下,

结果,我震精了,我不蛋定了,我狂呼大叫了,它亮了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

这么高兴的事我一定要写下来:

先说明一下硬件:(我用的是S3C6410)

 LED4LED3LED2LED1
GPIOGPK7GPK6GPK5GPK4

GPKCON00X7F008800
GPKDAT0X7F008808

/* led_on.S */

.text
.global _start
_start:
        LDR     R0, =0X7f008800     ;把R0设置为GPKCON0的地址
        LDR     R1, #0X00010000     ;高16位对应GPK7~4,设置为1时表示输出状态,这里把LED1都设置为输出
        STR     R1, [R0]            ;设置GPKCON0,使对应的LED引脚为输出状态

        LDR     R0, =0X7f008808     ;把R0设置为GPKDAT的地址
        LDR     R1, #0X000000e0     ;4~7位对应LED1~4,置0的时候LED点亮,这里把LED1点亮
        STR     R1, [R0]            ;点亮LED

MAIN_LOOP:
        B       MAIN_LOOP           ;死循环

/* Makefile */

led_on.bin:led_on.S
	arm-linux-gcc -c led_on.S -o led_on.o
	arm-linux-ld -Ttext 0x0000000 led_on.o -o led_on.elf
	arm-linux-objcopy -O binary -S led_on.elf led_on.bin
clean:
	rm -f led_on.bin led_on.elf *.o

好吧,其实就是这么简洁和简单了,我继续研究去了,哈哈偷笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值