s5pv210开发与学习:1.5之裸机汇编流水点灯

目录

1.硬件原理图LED部分

2.Datesheet资料查阅

3.代码编写

4.参考、学习资料:


1.硬件原理图LED部分

x210BV3S的电路原理图

s5pv210开发与学习:1.5之裸机汇编流水点灯_第1张图片

1.1各LED对应的控制IO口

D22----------------------》GPJ0_3

D23----------------------》GPJ0_4

D24----------------------》GPJ0_5

D25----------------------》PWMTOUT1----------------------》GPD0_1

当对应的GPIO口输出低电平时,LED点亮,反之熄灭;


2.Datesheet资料查阅

控制GPJD0_1的寄存器资料如下:

s5pv210开发与学习:1.5之裸机汇编流水点灯_第2张图片

s5pv210开发与学习:1.5之裸机汇编流水点灯_第3张图片

控制GPJ0_3/4/5的寄存器如下:

s5pv210开发与学习:1.5之裸机汇编流水点灯_第4张图片

s5pv210开发与学习:1.5之裸机汇编流水点灯_第5张图片

s5pv210开发与学习:1.5之裸机汇编流水点灯_第6张图片

s5pv210开发与学习:1.5之裸机汇编流水点灯_第7张图片

阅读文档可知:

      GPJ0CON控制寄存器的地址为:0xE020_0240
      当设置为0时,相应IO设置为输入;当设置为1时,相应IO设置为输出;其他设置,参照文档;

       比如D22对应GPIO为GPJ0_3,需要设置GPJ0CON[3],将GPJ0CON的【15:12】位先清零,再置1,即可将GPJ0_3设置为输出;

        GPJ0DAT为数据寄存器,地址为:0xE020_0244

        当设置为输出时,设置为1时输出高电平,设置为0时输出低电平;设置为输入时,通过读取该寄存器的值来判断外部输入的电平;


3.代码编写:代码仓库-》流水灯

led.bin: led.o 
	arm-linux-ld -Ttext 0x0 -o led.elf $^
	arm-linux-objcopy -O binary led.elf led.bin
	arm-linux-objdump -D led.elf > led_elf.dis
	gcc mkv210_image.c -o mkx210
	./mkx210 led.bin 210.bin
	
%.o : %.S
	arm-linux-gcc -o $@ $< -c

%.o : %.c
	arm-linux-gcc -o $@ $< -c 

clean:
	rm *.o *.elf *.bin *.dis mkx210 -f

arm-linux-ld:一个链接程序工具,其作用主要是将汇编过的多个二进制文件进行链接,成为一个可执行的二进制文件,这个命令的选项有好多,具体用到的时候大家可以使用--help 选项来查看具体的选项用法。

arm-linux-ld -Ttext 0x0 -o led.elf $^:这句话是将所有的依赖文件连接成ELF格式文件,在连接的过程中,-Ttext 0x0这个选项告诉连接器我的这段程序需要被加载到RAM的0x00000000地址处执行。所以在连接的时候第一条语句的连接地址就是0x00000000,第二条语句就是跟在其后面。有很多人都议论连接地址和运行地址这个怎么说的都有。运行地址可以等于连接地址,还可以认为运行地址是pc指针指向的地址,就是正在执行指令的地址。只要理解了这个概念就可以了。

arm-linux-objcopy:被用来复制一个目标文件的内容到另一个文件中.此选项可以进行格式的转换.在实际编程的,用的最多的就是

将ELF格式的可执行文件转换为二进制文件

arm-linux-objdump:常用来显示二进制文件信息,常用来查看反汇编代码

4.参考、学习资料:

1. 【u-boo-2016到s5pv210】 0.2 S5PV210的裸机点灯

2.开发板电路原理图

3.S5PV210芯片手册

4.s5pv210_irom_applicationnote_preliminary_20091126.pdf

5.ARM指令集--ldr、mov与str的用法与区别

6.编译出错:start.S:88: Error: invalid constant (61f) after fixup

7.指令B和BL的区别

你可能感兴趣的:(5.ARM裸机,s5pv210,点灯,裸机)