ARM汇编写的流水灯,完全裸机(对于汇编学习,板子启动初始化认识帮助很大)
2013-11-15 22:02
447 查看
我是用的是6410的板子(128MBDDR,256MBnand)。
里面有我的一些注释,希望大家一起学习交流学习。
编译通过的话,烧写到要从nand的0地址开始,这与6410板子的启动有关系,具体自己看一些书籍查询。
里面有我的一些注释,希望大家一起学习交流学习。
编译通过的话,烧写到要从nand的0地址开始,这与6410板子的启动有关系,具体自己看一些书籍查询。
/*Makefile*/ CC := arm-linux-gcc AS := arm-linux-as LD := arm-linux-ld OBJCOPY := arm-linux-objcopy BIN := arm.bin ELF := arm OBJS := start.o main.o all:$(ELF) $(OBJCOPY) $< -O binary /tftpboot/$(BIN) #-Ttext指定程序的人口地址是在nand地址的0 $(ELF):$(OBJS) $(LD) $^ -o $@ -Ttext 0 %.o:%.c $(CC) $< -c -o $@ %.o:%.s $(AS) $< -o $@ .PHONY:clean clean: rm -rf $(OBJS) $(ELF)
/*start_led.s*/
.align 2 .global _start,start,loop,delay1 .text _start: mov r0,#0x70000000 @外围寄存器的基地址 orr r0,#0x13 @外围寄存器的大小size=0x13 = 256M mcr p15,0,r0,c15,c2,4 @告诉处理器访问外围存储器的大小(MMU) ldr r0,=0x7e004000 @门狗定时器控制寄存器,关闭。 ldr r1,[r0] bic r1,#(1 << 5) str r1,[r0] @mov sp,#0x2000 @初始化栈指针,(6410板子内置DROM = 8K) ldr r0,=0x7f008820 @GPMCON ldr r2,[r0] @read the value ldr r1,=(~0xffff) @r1 = ~0xffff and r2,r1 @clear the 16bits(4 leds) ldr r1,=0x1111 @enable the GPMCON(16bits) as output orr r2,r1 str r2,[r0] @write in the GPMCON ldr r0,=0x7f008824 @GPMDAT ldr r2,[r0] @read the GPMDAT old value mov r1,#0xf orr r2,r1 @off the leds str r2,[r0] @write new value in the GPMDAT start: @after led on 4 leds,init r5 to the first led mov r5,#0 @r5 is about which leds is on loop: cmp r5,#4 beq start mov r1,#1 ldr r0,=0x7f008824 @the r5 led on ldr r2,[r0] bic r2,r1,lsl r5 str r2,[r0] mov r3,#0 bl delay1 ldr r2,[r0] @the r5 led off,then the led right move orr r2,r1,lsl r5 str r2,[r0] add r5,#1; b loop delay1: nop; add r3,#1 ldr r4,=0xffff cmp r3,r4 moveq pc,lr b delay1
相关文章推荐
- 朱老师ARM裸机学习笔记(七):汇编写启动代码之调用C语言
- ARM学习笔记012之mini2440上电的启动和初始化程序分析(即Bootloader分析)
- 十二.ARM裸机学习之SD卡启动详解
- 在一台ubuntu的arm板子上学习arm汇编
- 朱老师ARM裸机学习笔记(六):ARM汇编
- 一.ARM裸机学习之ARM汇编
- ARM 裸机程序学习 03 - 发送SOS信号(汇编 + C)
- 分享一个高手的python学习随笔。对于入门的新手有很大帮助
- ARM先生对于裸机学习的看法
- 学习PC裸机汇编输出HelloWorld环境搭建和解决启动镜像问题
- ARM裸机学习之S5PV210启动方式理解
- 五.ARM裸机学习之汇编写启动代码之关看门狗,开iCache,汇编程序和C程序互相调用
- ARM裸机基础学习--汇编语法和指令
- 记录自已学习之ARM汇编语言之bic和orr
- 关于于渊的一个操作系统的实现第二版学习之第二章bochs裸机启动的练习
- 关于于渊的一个操作系统的实现第二版学习之第三章bochs裸机启动的练习3.1
- GNU ARM汇编--(十八)u-boot-采用nand_spl方式的启动方法
- 对于ARM的启动,系统升级,烧写过程和文件系统等方面的总结分析
- arm-linux内核启动学习笔记(一)
- 对于linux常用命令的学习与总结 附上开机默认启动的图形界面修改为字符界面以及挂载光盘的过程