Mais conteúdo relacionado Semelhante a S3C44B0 User Guide (20) S3C44B0 User Guide2. www.itsn.cn中国信息技术资源网
论坛地址:http://www.itsn.cn/bbs
修改记录:
版本号 修改人 修改时间 备注 主要内容更改(写要点即可)
V0.1 ITSN 12/17/2005 创建
V0.2 ITSN 03/15/2006 修改 将图片的注释加上,补充恢复文件说
明。
V0.3 ITSN 03/26/2006 修改 修改 tftp 下载部分说明
V0.4 ITSN 03/29/2006 修改 增加了 FAQ 部分
V0.5 ITSN 04/18/2006 修改 Flash 增加对 AM29LV160DB 的说明
简介
Samsung(三星)公司推出的 16/32 位 RISC 处理器 S3C44B0X 为手持设备和一般类型的提供了一种高性
能低成本的解决方案。为了降低整个系统的成本,S3C44B0X 内部集成了丰富的片内外设,包括:8K 的 cache,
可选的片内 SRAM,LCD 控制器,带有握手信号的双同道 UART,4 同道 DMA,系统管理器(片选逻辑,
FP/EDO/SDRAM 控制器),带有 PWM 功能的 5 通道定时器,I/O 端口,RTC 实时时钟,8 通道 10 位 ADC,IIC、
IIS 总线接口,同步 SIO 接口以及用于时钟管理的 PLL 锁相环。
S3C44B0X 采用了 ARM7TDMI 内核,0.25um 标准宏单元和存储编译器。TDMI 的每一个字母代表一种功
能:
T(Thumb),支持 16 为压缩指令集 Thumb
D(Debug),支持片上 Debug
M(Multiplier),内嵌硬件乘法器
I(ICE): 嵌入式 ICE,支持片上断点和调试点
S3C44B0X 极低的功耗以及简单,只能的全静态设计使其非常适合对成本和功耗敏感的项目。同时
S3C44B0X 还采用了一种新的总线结构,即 SAMBAII(三星 ARM CPU 嵌入式微处理器总线结构)
S3C44B0X 通过集成全面、通用的片内外设,大大减少了系统电路中除处理器外的器件需求,从而最小
化系统成本。下列是其集成的边内外设:
外部存储器控制器(FP/EDO/SDRAM 控制器,片选逻辑)
LCD 控制器(最大支持 256 色 STN,LCD 具有一个专用的 DMA 通道)
2 个通用 DMA 通道,2 个外设 DMA 通道并有片外请求管脚
2 个 UART,带有握手协议(支持 irDA1.0,具有 16 字节 FIFO)1 通道 SIO
IIC 多主总线接口
IIS 总线控制器
5 个 PWM 定制器和 1 通道内部定时器
看门狗定时器
71 个通用 I/O 口,作多支持 8 各片外中断源
功耗管理:普通,慢速,空闲和停止模式
8 通道 10 位 ADC
具有日立功能的 RTC
带 PLL 的片内时钟发生器
4. www.itsn.cn中国信息技术资源网
一、 S3C44B0 学习板简介
S3C44B0 开发板是依据三星公司评估板的基础上开发而来, 其主要硬件包括:
Samsung S3C44B0X 66MHz (ARM7 内核)
8M Flash
2M SDRAM
10M Base-T 以太网接口
IDE 接口
USB1.1 设备接口
IIC 总线接口
RTC 实时时钟
LCD 接口,支持 640×480 以下单色或 320×240 以下 STN/DSTN 256 色
2 个 RS232 UART 串行口,支持 Modem 握手信号
标准 14 针 JTAG 接口
1×4 键盘,1×3 LED 灯
可扩展总线接口
同时,我们提供完善的开发包和各种硬件测试程序(含源码),以帮助客户快速掌握 S3C44B0 的各种片
内外设以及扩展接口的使用方法:
ADS1.2 IDE, ARM 程序开发集成环境
GNU 工具包(包括交叉编译器、链接、汇编工具)
uClinux 源码包
U-Boot1.1.1(BOIS)启动控制程序(含源码)
应用程序代码
相关技术文档,手册
键盘控制 LED 试验
实时时钟演示
IIC 测试程序
PWM 测试程序
uCOS-II 实时操作系统加载试验
下图是 S3C44B0 的开发板图,我们在这里可以看到使用的板子的各种外围芯片,外设以及各种接口。
板上使用的 IC 如下:
CPU S3C44B0X(三星)
Flash(2M 字节) SST39VF160(SST)/ AM29LV160(AMD)
SDRAM(8M 字节) HY57V641620(现代)
以太网控制器 RTL8019AS(Realtek)
USB 设备控制器 PDIUSBD12(Philips)
音频解码 CS4334(Crystal)
10. www.itsn.cn中国信息技术资源网
我们编写了一些实用的测试程序,使大家能够快速的掌握板子上各种外设的操作,以及 S3C44B0X
CPU 的一些特性和编程方法。在运行测试程序前,先将他们从光盘中拷贝到硬盘中,并去掉所有文件
的只读属性。由于所有的测试程序都是在 ADS1.2 调试的,所以大家在使用这些测试程序之前需要安
装 ADS1.2。所有测试程序的目录结构都是一样的。
1. 跑马灯测试程序
试验目的:测试 S3C44B0 的 GPIO 口功能。
源码路径:光盘:测试程序跑马灯led
工程项目:led.mcp
2. 键盘控制 LED 测试程序
试验目的:测试外部中断管脚 EXTINT4,5,6,7 的功能
源码路径:光盘:测试程序按键控制 LEDkeyled
工程项目:keyled.mcp
3.RTC 实时时钟测试程序
试验目的:测试 S3C44B0 片内集成的 RTC 功能
源码路径:光盘:测试程序RTC 实时时钟rtc
工程项目:rtc.mcp
5.USB 测试程序
试验目的:测试 S3C44B0 与 Philips 的芯片结合使用完成 USB 从设备功能
源码路径:光盘:测试程序USB 测试usb
工程项目:usb.mcp
6. 音频测试程序
试验目的:测试 S3C44B0 的 IIS 总线功能
源码路径:光盘:测试程序音频测试audio
工程项目:audio.mcp
7. 其他功能测试程序
试验目的:测试 S3C44B0 的 IIS 总线功能
源码路径:光盘:测试程序音频测试audio
关于如何使用测试工程项目,请参看《S3C44B0 试验说明.pdf》。(路径 光盘:测试程序 S3C44B0
试验说明.pdf)
四、 建立 Windows 系统上虚拟 Linux 环境 Cygwin 以及 ARM 交叉编译环境
1. 建立 Cygiwn 虚拟 Linux 环境
请参看 光盘:文档Windows 下快速安装 Cygwin.pdf 文档。
2. 建立编译环境
在 Windows 下安装好 Cygwin 后,我们需要建立编译 arm 程序的环境,也即安装 arm-tools 工具。
12. www.itsn.cn中国信息技术资源网
图 4-3
最后添加将 armtools 的命令路径添加到 Windows 的环境变量 Path 中。注意在上一步解压的过程
中,armtools被解压到Cygwin 的安装目录下,在这里Cygwin 是安装在 C: 根目录下的。这样armtools
交叉编译环境就安装好了。
五、 Bootloader 装载程序(U-BOOT)
U-BOOT 是一个开源 bootloader,是由德国的工程师 Wolfgang Denk 从 8XXROM 代码发展而来的,
它支持很多处理器,比如 PowerPC、ARM、MIPS 和 x86。目前,U-BOOT 源代码在 sourceforge 网站的
社 区 服 务 器 中 , Internet 上 有 一 群 自 由 开 发 人 员 对 其 进 行 维 护 和 开 发 , 它 的 项 目 主 页 是
http://sourceforge.net/projects/U-BOOT。U-BOOT 的最新版本源代码可以在 Sourceforge 的 CVS 服
务器中匿名获得。由于其成熟和稳定,已经在许多嵌入式系统开发过程中被采用。
为什么我们需 U-BOOT?显然可以将 ucLinux 直接烧入 flash,从而不需要额外的引导装载程序
(bootloader)。但是从软件升级的角度以及程序修补的来说,软件的自动更新非常重要。
我们在 S3C44B0 已经移植好了 U-BOOT,开发包路径:
1.编译 U-BOOT:
在 linux(或其他 linux 虚拟环境下,如 cygwin)解压源码包,在这里我们选择在 Windows 系
统下的 Cygwin 环境下来编译。先将光盘中的 u-boot 包拷贝到系统的一个目录下,在这里我
们拷贝到 D:盘的 s3c44b0 目录下
tar zxvf u-boot-xxxxxxxx.tar.gz
15. www.itsn.cn中国信息技术资源网
图 5-5
这一步骤生成了三个文件,其中:
u-boot,ELF 文件格式,使用 Flashpgm 工具来打开此文件编程到 Flash 当中
u-boot.bin 是二进制文件,使用 Fluted 工具来将此文件编程到 Flash 当中
2.U-BOOT 下载
在这里我们介绍两种方法来将编译好的 U-Boot 编程 Flash,一种是使用 Flashpgm 工具,另外一
种是 Fluted 工具。
FlashPgm
FlashPgm 是什么公司的,是一个 GUI 界面的 Flash 编成工具。由于其友好的编程界面,
更快的编程速度和更高的编程成功率使其被大家普遍使用。
在使用 FlashPgm 编程 Flash 的时候注意使用 JTAG 板的 Wiggler 接口连接到目标板上,
FlashPgm 不支持 STD 的 JTAG 接口。打开 Configuration 菜单下的 Communications 可以设置
设置 FlashPgm 的连接方式,在这里我们使用, 同时确保 JTAG 板的 J5 条线到 Wiggler 接口
状态。
16. www.itsn.cn中国信息技术资源网
图 5-6
点击菜单 File-Open 选择 .ocd 文件。Ooc 文件是一个硬件系统的配置文件,设置了
CPU,Flash 类型,Flash 接口的位宽等具体的参数,可通过 FlashPgm 生成。光盘上已经带有
两个已经配置好的.ocd 文件,在光盘:工具Flash 编程工具 目录,其中包含两个.ocd 文
件。
44B0X_SST.ocd —— 配有 SST39VF160 Flash 的学习板使用
44B0X_AMD.ocd —— 配有 AM29LV160 Flash 的学习板使用
图 5-7
点击 Flash ID 按钮检测一下 Flash ID 能够读取到,以测试 JTAG 连接是否正常。如果
能够正常读取出来,表示 JTAG 连接没有问题,如图 5-8 所示。
18. www.itsn.cn中国信息技术资源网
图 5-10,编程,校验成功
这时候超级中断将显示 U-BOOT 打印输出,通过 FlashPgm 成功的将 U-BOOT 烧写到
Flash 当中。
Fluted.exe
Fluted.exe 是一个基于命令行方式的 Flash 编程工具,其只支持 STD 方式的 JTAG 链接。
以下是其运行的参数:
命令:(大小写无关)
R —— 读 Flash
W —— 写 Flash
E —— 擦除 Flash
V —— 校验 Flash
T —— 测试扫描线
A —— 擦除 + 写 Flash
选项: (大小写无关)
-V 校验(默认是关闭的,也就是说默认不校验)
-D Debug 模式 (默认关闭)
-C 指定配置文件 (默认是 default.fcd)
-F 指定数据文件
-S 指定 Flash 起始地址(十进制方式)
-L 指定写入的数据长度 (256 或者文件的大小,十进制方式)
一般我们使用 Fluted.exe 的方法如下,
allowio.exe Fluted /a A –F u-boot.bin -V -S 0
此命令将 u-boot.bin 文件(二进制)写入到 Flash,从地址 0 开始,使用默认的 default.fcd
文件,通常编写将上述命令放在一个.bat 批处理文件来方便执行。
20. www.itsn.cn中国信息技术资源网
图 5-12
执行 help 指令,将显示 U-BOOT 支持命令,常用 U-BOOT 指令有:
命令 功能
go 执行指定地址上的程序
bootm 引导应用程序或者操作系统(压缩格式)
tftp 通过太网调入指定的文件到指定的内存地址
loadb 通过串口以 kermit 方式下载文件
md Memory display,显示指定地址的值
mm Modify Memory,修改内存指定地址的值
mw Memory Write,写内存
cp 数据复制,如果目的地址空间在 Flash 中,就可以通过 cp 来写 Flash
printenv 显示环境变量,如 IP 地址等
setenv 设置环境变量
Saveenv 保存环境变量
erase 擦除指定地址的 Flash
flinfo 显示 Flash 的信息
reset 复位 CPU
version 显示版本信息
?/ help 显示帮助信息
六、 uClinux 编译与下载
1.建立编译环境
与在 Windows 的 Cygwin 环境下编译 U-BOOT 类似,我们在 linux 下编译运行在 ARM 上的程序
同样需要使用交叉编译工具 armtools。将光盘:工具编程工具armtoolslinux 版本
arm-elf-tools-20040427.sh 拷贝到硬盘后执行这个程序将会自动安装此 armtools 交叉编译器。
2. 编译 uClinux
21. www.itsn.cn中国信息技术资源网
将 uClinux 的压缩包拷贝到 linux 主机上,然后通过下列命令解压缩源码包,这样会在当前
的目录下面生成 uClinux-dist 目录。(在这里,我们通过通过 SecureCRT 超级终端工具用 ssh 登
陆到 Linux 主机的, 因为在 Cygwin 的虚拟 Linux 环境下不能使用 make menuconfig。)
tar zxvf uClinux-dist-xxxxxxxx.tar.gz
图 6-1
23. www.itsn.cn中国信息技术资源网
图 6-3
选择 Exit 返回上级界面,然后选择 Kernel/Library/Defaults Selection --->,界面如图:
在这里我们我们选择了使用的 linux 内核版本 linux-2.4.x,Libc 版本选择 uClibc,然后选中
Customize Kernel Settings(内核配置) 和 Customize Vendor/User Settings (NEW)(厂商/用户
程序设置)进行更进一步的配置。
24. www.itsn.cn中国信息技术资源网
图 6-4
退出后选择 Yes 保存配置信息,如下图。
图 6-5
我们在上面配置的时候选择了 Customize Kernel Settings 和 Customize Vendor/User
Settings (NEW)选项。所以程序会自动进入 Kernel Settings 和 Vendor/User Settings 界
面。
注:make menuconfig 将打开上一次的配置选项,如果希望重新构建一个全新的内核,
可以在 make menuconfig 之前先运行 make mrproper。
26. www.itsn.cn中国信息技术资源网
图 6-7 Vendor/User Settings 界面
这样完成了上面两个配置后,整个 uClinux 的配置就结束了。接下来编译 uClinux。依次执
行如下指令:
make dep
make clean
make lib_only
make user_only
make romfs
make image
make
完成所有的操作后,在 uClinux-distimages目录下将生成 uclinux_rom.bin(二进制压缩
文件)。接下来我们可以通过 U-BOOT 配合串口或者网口来将此文件下载到 Flash 当中。
2. 将 uClinux 下载到 Flash
我们这里通过 U-BOOT 提供的几种方式来将编译好的 uClinux 下载到 Flash 当中运行。
串口下载(下载速度慢):
在 U-BOOT 命令提示符下输入 loadb 0xC500000 命令(0xC500000 是下载文件存放的地址,
SDRAM 中),U-BOOT 将等待用户传送文件。然后我们启动超级终端的文件发送,点击菜单 传送->
28. www.itsn.cn中国信息技术资源网
图 6-10
如果我们要测试新编译的 uClinux 运行情况,可以直接输入 bootm 命令,这样 U-BOOT 就会
在当前放置下载的程序的地方(这里是 0xC500000)解压缩代码到指定地址,然后跳转到这个地址
开始运行程序,大家可以自己做这个测试。
接下来我们通过 cp 命令将数据从 0xC500000 写入到 Flash 中的 0x50000 开始的地方。在复
制数据之前,先将 Flash 对应的区域删除。拷贝数据的长度是按照双字来操作的,所以我们需要
将字节长度/4 + 1 来得到最终要输入的长度参数(16 进制)。
图 6-11
数据写入到 Flash 空间的 0x50000 后,我们可以重启我们的系统,就可以看到这个启动过程
了。U-Boot 启动后,3 秒钟内如果超级终端没有任何输入,就会自动从 Flash 0x50000(0x50000
这个地址是 U-B0OT 程序编程固定的,可以根据需要修改)的地址上将压缩的 uClinux 解压缩到
0xc008000(SDRAM)上,然后跳转到这个地址上,开始 uClinux 的启动。
29. www.itsn.cn中国信息技术资源网
网口下载(下载速度快):
网口下载是通过 tftp 协议的,在下载之前先确认一下 U-BOOT 的环境变量配置是否正确,在
U-BOOT 的命令提示符下输入 printenv 显示环境变量(启动参数),如下图:
图 6-12
其主要的环境参数包括:
bootcmd —— 启动命令,也就是 U-Boot 启动后如果在指定时间内没有按下任何按键后执
行的指令。
bootdelay —— 指定自动启动的等待时间,单位为秒
baudrate —— 串口波特率
etheaddr —— 以太网芯片的 MAC 地址
stdin —— 指定标准输入设备
stdout —— 指定标准输出设备
stderr —— 指定标准错误输出设备
bootfile —— 通过 tftp 从服务器上获取的文件名
ipaddr —— 本机(S3C44B0 板)的 IP 地址
serverip —— 运行 tftp 服务器程序的 PC 机 IP 地址
我们在使用 tftp 下载的时候要关心的参数是 bootfile, ipaddr, serverip 三个。
需要保证服务器的 IP 与目标板的 IP 在同一个网段内。如果需要修改参数可以通过
setenv 命令修改,例如:
=>setenv ipaddr 192.168.1.104 //设置本级的 IP 为 192.168.1.104
=>setenv serverip 192.168.1.100 //设置 Server 的 IP 为 192.168.1.100
=>setenv bootfile “uclinux_rom.bin”//设置 tftp 获取 uclinux_rom.bin 文件
30. www.itsn.cn中国信息技术资源网
注意在使用的时候不要使用“=”,例如 setenv ipaddr=192.168.1.104 是错误。
先将 PC 机的 tftp 服务器软件启动,在这里我们使用的 Cisco TFTP Server(安装文件在 光
盘:工具FTP 软件tftp serverTFTPServer1-1-980730.exe)。第一次启动我们需要设置 tftp
服务器的本地路径,点击 view->Options 弹出 tftp 设置窗口,如图 6-13 所示。在这里我们主
要设置 tftp 的服务器路径(就是包含你需要下载到学习板的文件的目录路径)。单击确定后,tftp
服务器就设置好了,这时候我们可以使用 U-Boot 来下载 uclinux 到目标板上了。
图 6-13
然后在 U-BOOT 命令提示符下输入 tftp 0xC500000 命令,下载就开始了。下载完后界面如下:
图 6-14 tftp 下载完界面
同时 Cisco TFTP Server 也将打印相应的信息,如下图。
31. www.itsn.cn中国信息技术资源网
图 6-15
后续的操作如同串口下载一样,我们可以通过 bootm 直接解压缩代码执行,也可以先将 Flash
擦除,然后通过 cp 命令将压缩代码写入 Flash,这样每次 U-BOOT 都能够在启动的时候自动解压
并运行这个程序。
我们也可以使用 光盘:工具FTP 软件tftp servertftpd32.exe 这一个 tftp 服务器端软
件,其使用方法很简单,无需安装,直接启动后设置下载文件的服务器路径(此路径包含了我们
需要下载的文件)就好了。下载界面参看下图
图 6-16
32. www.itsn.cn中国信息技术资源网
七、 开发板的地址空间分配
S3C44B0 一共支持 8 个空间 BANK,每一个 BANK 是 32M。开发板的空间分配系统地址空间分配如下:
Flash 2M
0x00000000~0x001fffff
特殊功能寄存器(4M字节)
nGCS0
Philip USB PDIUSBD12nGCS1
硬盘
RTL8019网卡
保留(ROM,SROM...)
保留(ROM,SROM...)
nGCS2
nGCS3
nGCS4
nGCS5
SDRAM 8M
0x0C000000~0x0C800000
nGCS6
保留(ROM,SRAM,SDRAM)nGCS7
BANK0
BANK1
256M空间
SA[27:0]
BANK2
BANK3
BANK4
BANK5
BANK6
BANK7
图 7-1
从空间上看,学习板已经使用了 BANK0,1,2,3,6,剩下的 BANK4,5 和 BANK7 可以用来扩展
我们的外设。
八、 FAQ 常见问题
1.串口没有输出
答:S3C44B0 学习板一共有两个串口,COM0 与 COM1 口。程序默认的打印输出是 COM0
口,确认与 PC 串口向量的是 COM0 口。
2. 连接串口后,超级终端打印出 U-Boot 提示信息,但是却不能输入
答:S3C44B0 学习板子提供了一根直连的串口线(直连串口线的 RX,TX 脚,也就是 2,3 脚没
有交叉),在出厂之间已经经过测试,应该没有问题。学习板的串口也已经经过测试,应该也不会有
问题,问题可能出在 PC 机的串口。我们可按照以下步骤来排查原因。
打开超级终端软件,按照正常的方法设置(8N1,无流量控制,波特率无所谓),断开与学习板相连
的串口,然后将其 RX,TX,短接,也就是 2,3 脚短接,然后在 PC 上键入任意字符,看超级终端软
件是否能够回显我们键入的字符
能够回显
表示我们的串口线与 PC 机的串口都是没有问题,那问题就是出在学习板的串口上,如
果是这样,请及时和我们联系。
不能回显
33. www.itsn.cn中国信息技术资源网
表示 PC 机的串口或者串口先有问题,我们再不用串口线而直接短接 PC 串口的 2,3 脚,
这样来判断是不是 PC 串口的问题。如果不能回显,那么就是 PC 串口有问题。否则问题出
现在串口线上,这种情况下请及时和我们联系。
3.uClinux 运行起来后 PC 机 Ping 不通学习板
答:首先确认你的系统网线连接正常。然后确认学习板的 IP 地址是不是与 PC 的网卡地址在同一
个网段内,如果不是,请在超级终端的命令提示符号用 ifconfig 指令修改学习板的 IP 地址到 PC 机的
同一个网段内,切记不要发生 IP 地址冲突。
/>ifconfig eth0 192.168.0.101
其中 IP 地址可以根据用户环境的不同而不同。
4. 学习板的光盘中已经包含了 windows 下的 tftp 服务器端软件,但在 linux 下如何操作?
答:linux 下也有 tftp 的服务器端和客户端的软件。我们以 RedHat V9.0 为例。首先我们需要测
试一下我们原来安装好的 linux 是否已经将 tftp 服务器与客户端安装好了。
测试 tftp 客户端软件:
在 linux 的命令行终端直接输入 tftp。如果已经安装了,将进入 tftp 命令交互状态,入下
图所示
图 8-1
如果没有安装则提示:Command Not Found.
测试是否有安装 tftp 服务器:
34. www.itsn.cn中国信息技术资源网
进入/etc/xinetd.d 目录,查看是否有 tftp 配置文件,如果有则表明已经安装好 tftp 服务,入下
图所示。如果没有则表示尚未安装 tftp 服务器,我们需要另外安装。
图 8-2
如果在安装 linux 的时候,没有安装这些,我们需要手动安装,这两个软件都在 RedHat 的安装光
盘上(RedHat9 在第三张安装光盘)。它们都是以 rpm 包的格式存在在光盘上的,我们直接使用 rpm 安
装这两个软件。安装好后,tftp 服务器端软件需要再设置一下才能使用。进入/etc/xined.d 目录,
编辑 tftp 配置文件,入下图。
图 8-3
在这里我们主要关心 server_args 与 disable 参数。其中 server_args 中指定了 tftp 服务器的
工作目录,客户端看到的文件,目录都是以这个目录为根目录的相对路径。举例来说,果想客户端能
够通过 tftp 获取服务器的端 test.bin 文件,我们就需要在服务器上将 test.bin 文件放在这个指定
的目录下。Disable = no 表示使能 tftp 服务。最后我们可以通过 service xinetd restart 指令启动
tftp 服务。
图 8-4
九、 结束语