没有合适的资源?快使用搜索试试~ 我知道了~
S3C2410完全开发流程linuxidc.COM整理.pdf
需积分: 9 2 下载量 76 浏览量
2011-11-30
14:49:32
上传
评论
收藏 840KB PDF 举报
温馨提示
试读
57页
S3C2410完全开发流程linuxidc.COM整理,集大量代码于一册的手册,裸机开发的实用参考
资源推荐
资源详情
资源评论
S3C2410 完全开发流程
一.简介...........................................................................................................................................2
二.建立开发环境...........................................................................................................................3
(1)编译器arm-linux-gcc-3.4.1..................................................................................................3
(2)Jflash-s3c2410:S3C2410 芯片的JTAG工具.....................................................................3
(3)安装gdb调试工具................................................................................................................3
三.S3C2410 基础实验...................................................................................................................4
(1)实验一:LED_ON ..............................................................................................................4
(2)实验二:LED_ON_C..........................................................................................................5
(3)实验三:I/O PORTS ...........................................................................................................7
(4)实验四:arm-linux-ld..........................................................................................................9
(5)实验五:MEMORY CONTROLLER...............................................................................10
(6)实验六:NAND FLASH CONTROLLER........................................................................13
(7)实验七:UART .................................................................................................................15
(8)实验八:printf、scanf.......................................................................................................18
(9)实验九:INTERRUPT CONTROLLER...........................................................................19
(10)实验十:TIMER..............................................................................................................23
(11)实验十一:MMU............................................................................................................25
(12)实验十二:CLOCK ........................................................................................................33
四.Bootloader vivi........................................................................................................................36
(1)阶段 1:arch/s3c2410/head.S............................................................................................36
(2)阶段 2:init/main.c............................................................................................................37
1、Step 1:reset_handler().............................................................................................38
2、Step 2:board_init()..................................................................................................39
3、Step 3:建立页表和启动MMU...............................................................................39
4、Step 4:heap_init()...................................................................................................42
5、Step 5:mtd_dev_init().............................................................................................44
6、Step 6:init_priv_data()............................................................................................49
7、Step 7:misc()和init_builtin_cmds()........................................................................50
8、Step 8:boot_or_vivi() .............................................................................................51
www.linuxidc.com
一.简介
本书面向由传统 51 单片机转向 ARM 嵌入式开发的硬件工程师、由硬件转嵌
入式软件开发的工程师、没有嵌入式开发经验的软件工程师。分 9 个部分:
1、开发环境建立
2、S3C2410 功能部件介绍与实验(含实验代码)
3、bootloader vivi 详细注释
4、linux 移植
5、linux 驱动
6、yaffs 文件系统详解
7、调试工具
8、GUI 开发简介
9、UC/OS 移植
通过学习第二部分,即可了解基于 ARM CPU 的嵌入式开发所需要的外围器
件及其接口。对应的实验代码实现了对这些接口的操作,这可以让硬件工程师形
成一个嵌入式硬件开发的概念。这部分也可以当作 S3C2410 的数据手册来使用。
一个完整的嵌入式 linux 系统包含 4 部分内容:bootloader、parameters、kernel、
root file system。3、4、5、6 部分详细介绍了这 4 部分的内容,这是 linux 底层软
件开发人员应该掌握的。通过学习这些章节,您可以详细了解到如何在一个裸板
上裁减、移植 linux,如何构造自己的根文件系统,如何编写适合客户需求的驱
动程序——驱动程序这章将结合几个经典的驱动程序进行讲解。您还可以了解到
在用在 nand flash 上的非常流行的 yaffs 文件系统是如何工作的,本书将结合 yaffs
代码详细介绍 yaffs 文件系统。
第 7 部分介绍了嵌入式 linux 开发中使用 gdb 进行调试的详细过程。
此文档目前完成了 1、2、3 部分,后面部分将陆续完成。希望能对各位在嵌
入式开发方面献上棉力。
欢迎来信指出文中的不足与错误,欢迎来信探讨技术问题。
www.linuxidc.com
二.建立开发环境
(1)编译器 arm-linux-gcc-3.4.1
下载地址:
ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.ta
r.bz2
执行如下命令安装:
bunzip2 arm-linux-gcc-3.4.1.tar.bz2
tar xvf arm-linux-gcc-3.4.1.tar -C /
生成的编译工具在目录/usr/local/arm/3.4.1/bin 下,修改/etc/profile,
增加如下一行。这可以让我们直接运行 arm-linux-gcc,而不必将其绝对路径都
写出来,不过这得重新启动后才生效:
pathmunge /usr/local/arm/3.4.1/bin
(2)Jflash-s3c2410:S3C2410 芯片的 JTAG 工具
我们的第一个程序就是通过它下载到开发板上的 nor flash 或者 nand flash
上去的。把它放到/usr/local/bin 目录下。
下载地址:e
ftp://ftp.mizi.com/pub/linuette/SDK/1.5/target/box/Jflash/Jflash-
s3c2410
注意:步骤 3 您现在不必理会,可以等进行到“调试”部分时再回过头来看。
(3)安装 gdb 调试工具
下载地址:
http://www.gnu.org/software/gdb/download/
http://ftp.gnu.org/gnu/gdb/gdb-6.3.tar.gz
执行如下命令安装:
a.安装在主机上运行的 arm-linux-gdb 工具:
tar xvzf gdb-6.3.tar.gz
cd gdb6.3
./configure --target=arm-linux
make
make install
此时,在/usr/local/bin 中生成 arm-linux-gdb 等工具
b.继续上面的步骤,安装 gdbserver。需要将此工具下载到开发板上运
行,这在后面会详细描述:
cd gdbserver
export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
./configure arm-linux
make
此时在当前目录中生成了 gdbserver 工具,当我们讲到如何调试时,
会把这个文件下载到开发板上去。
www.linuxidc.com
Linux公社(LinuxIDC.com)
是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
三.S3C2410 基础实验
本章将逐一介绍 S3C2410 各功能模块,并结合简单的程序进行上机实验。您
不必将本章各节都看完,完全可以看了一、两节,得到一个大概的印象之后,就
开始下一章。本章可以当作手册来用。
注意:了解 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 各引脚的数据
www.linuxidc.com
Linux公社(LinuxIDC.com)
是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
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 函数。
很可惜,在我们的裸板上,这段代码无法执行,所以我们得自己写一个。这段代
码很简单,只有 3 条指令。
crt0.s 代码:
www.linuxidc.com
Linux公社(LinuxIDC.com)
是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
剩余56页未读,继续阅读
资源评论
yingxian_Fei
- 粉丝: 122
- 资源: 49
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功