编辑: 黎文定 2019-07-15

一、两节,得到一个大概的印象之后,就 开始下一章.本章可以当作手册来用. 注意:了解 S3C2410 各部件最好的参考资料是它的数据手册.本文不打算翻 译该手册,在进行必要的讲解后,进行实际实验――这才是本文的重点. (1)实验一:LED_ON led_on.s 只有

7 条指令,它只是简单地点亮发光二极管 LED1.本实验的目 的是让您对开发流程有个基本概念. 实验步骤: a.把PC 并口和开发板 JTAG 接口连起来、确保插上 BOOT SEL 跳线、上电(呵呵,废话,如果以后实验步骤中未特别指出,则本步骤省略) b.进入 LED_ON 目录后,执行如下命令生成可执行文件 led_on: make c.执行如下命令将 led_on 写入 nand flash: i. Jflash-s3c2410 led_on /t=5 ii.当出现如下提示时,输入

0 并回车: iii.当出现如下提示时,输入

0 并回车: iv.当再次出现与步骤 ii 相同的提示时,输入

2 并回车 d.按开发板上 reset 键后可看见 LED1 被点亮了 实验步骤总地来说分

3 类:编写源程序、编译/连接程序、烧写代码. 先看看源程序 led_on.s:

1 .text

2 .global _start

3 _start:

4 LDR R0,=0x56000010 @R0 设为 GPBCON 寄存器.此寄存器 @用于选择端口 B 各引脚的功能: @是输出、是输入、还是其他

5 MOV R1,#0x00004000

6 STR R1,[R0] @设置 GPB7 为输出口

7 LDR R0,=0x56000014 @R0 设为 GPBDAT 寄存器.此寄存器 @用于读/写端口 B 各引脚的数据

8 MOV R1,#0x00000000 @此值改为 0x00000080, @可让 LED1 熄灭

9 STR R1,[R0] @GPB7 输出 0,LED1 点亮

10 MAIN_LOOP:

11 B MAIN_LOOP 对于程序中用到的寄存器GPBCON、GPBDAT,我稍作描述,具体寄存器的操作 可看实验三:I/O PORTS.GPBCON用于选择PORT B的11根引脚的功能:输出、输 入还是其他特殊功能.每根引脚用2位来设置:00表示输入、01表示输出、10表 示特殊功能、 11保留不用. LED1-3的引脚是GPB7-GPB10, 使用GPBCON中位[12:13]、 [13:14]、[15:16]、[17:18]来进行功能设置.GPBDAT用来读/写引脚:GPB0对应 位

0、GPB1对应位1,诸如此类.当引脚设为输出时,写入0或1可使相应引脚输出 低电平或高电平. 程序很简单,第

4、

5、6 行3条指令用于将 LED1 对应的引脚设成输出引脚;

7、

8、9 行3条指令让这条引脚输出 0;

第11 行指令是个死循环. 实验步骤 b 中, 指令 make 的作用就是编译、 连接 led_on.s 源程序. Makefile 的内容如下:

1 led_on:led_on.s

2 arm-linux-gcc -g -c -o led_on.o led_on.s

3 arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_tmp.o

4 arm-linux-objcopy -O binary -S led_on_tmp.o led_on

5 clean:

6 rm -f led_on

7 rm -f led_on.o

8 rm -f led_on_tmp.o make 指令比较第

1 行中文件 led_on 和文件 led_on.s 的时间,如果 led_on 的时间比 led_on.s 的时间旧(led_on 未生成时,此条件默认成立),则执行第

2、

3、4 行的指令更新 led_on.您也可以不用指令 make,而直接一条一条地执行

2、

3、4 行的指令――但是这样多累啊.第2行的指令是预编译,第3行是连接, 第4行是把 ELF 格式的可执行文件 led_on_tmp.o 转换成二进制格式文件 led_on. 执行 make clean 时强制执行

6、

7、8 行的删除命令. 注意:Makefile 文件中相应的命令行前一定有一个制表符(TAB) 汇编语言可读性太差, 现在请开始实验二, 我用 C 语言来实现了同样的功能, 而以后的实验,我也尽可能用 C 语言实现. (2)实验二:LED_ON_C C 语言程序执行的第一条指令,并不在 main 函数中.当我们生成一个 C 程序 的可执行文件时,编译器总是在我们的代码前加一段固定的代码――crt0.o,它 是编译器自带的一个文件.此段代码设置 C 程序的堆栈等,然后调用 main 函数. 很可惜,在我们的裸板上,这段代码无法执行,所以我们得自己写一个.这段代 码很简单,只有

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题