ARM嵌入式系统开发环境.ppt_第1页
ARM嵌入式系统开发环境.ppt_第2页
ARM嵌入式系统开发环境.ppt_第3页
ARM嵌入式系统开发环境.ppt_第4页
ARM嵌入式系统开发环境.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章ARM嵌入式系统开发环境 5 1基本原理5 2实验及其要求 嵌入式系统及其开发应用 第二版 1 5 1基本原理 绝大多数的Linux软件开发都是以Native方式进行的 即本机 Host 开发 调试 本机运行的方式 这种方式通常不适合嵌入式系统的软件开发 因为嵌入式系统没有足够的资源在本机运行开发工具和调试工具 通常 嵌入式系统的软件开发采用一种交叉编译调试的方式 交叉编译调试环境建立在宿主机上 宿主机可以是一台PC或工作站 对应的目标板也称为开发板或实验板 图5 1给出了这种交叉编译环境的示意图 开发时使用宿主机上的交叉编译 汇编及链接工具形成可执行的二进制代码 这种可执行代码不能在宿主机上执行而只能在目标板上执行 因此需要把可执行文件下载到目标板上运行 一般调试的方法包括串口调试和以太网口调试 嵌入式系统及其开发应用 第二版 2 5 1基本原理 图5 1交叉编译环境示意图 嵌入式系统及其开发应用 第二版 3 5 1基本原理 5 1 1SemitARM9200实验箱本书后面的实验和开发实例均依托SemitARM9200实验箱进行阐述 SemitARM9200实验箱中的开发目标板及其配套软件由作者及其同事依托东南大学移动通信国家重点实验室和南京东大移动互联技术有限公司而开发 SemitARM9200实验箱分为上 下两层 它们所包含的模块名称及其数量分别列于表5 1和表5 2中 嵌入式系统及其开发应用 第二版 4 5 1基本原理 表5 1SemitARM9200实验箱上层 表5 2SemitARM9200实验箱下层 嵌入式系统及其开发应用 第二版 5 5 1基本原理 实验箱的实物图分别如图5 2和图5 3所示 开发板及接口 CDMA模块及电源 GPS模块及电源 Zigbee模块及电源 IEEE802 11g无线网卡的实物图分别如图5 4 图5 8所示 另外 GSM天线在实验箱的最低层 取出来后装在图5 3中GSM天线底座的位置上 嵌入式系统及其开发应用 第二版 6 5 1基本原理 图5 2实验箱上层 嵌入式系统及其开发应用 第二版 7 5 1基本原理 图5 3实验箱下层 嵌入式系统及其开发应用 第二版 8 5 1基本原理 图5 4SemitARM9200开发板及接口 嵌入式系统及其开发应用 第二版 9 5 1基本原理 图5 5CDMA模块及电源 嵌入式系统及其开发应用 第二版 10 5 1基本原理 图5 6GPS模块及电源 嵌入式系统及其开发应用 第二版 11 5 1基本原理 图5 7Zigbee 主 从 模块及电源 图5 8802 11g无线网卡 嵌入式系统及其开发应用 第二版 12 5 1基本原理 SemitARM9200开发板由核心板和底板组成 核心板在实验箱的最低层 取出来后装在图5 3中的核心板插槽处 核心板上集成了Atmel的AT91RM9200处理器 64MBSDRAM及16MB的Flash 为应用研发提供了足够的空间 底板上则提供以下外设接口 两个RS 232串口 COM 一个USBHost接口 两个USBDevice接口 一个10 100Mbps自适应以太网接口 核心板和底板配合即构成一个最小的完整应用系统 系统具有体积小 耗电低 处理能力强等特点 能够装载和运行嵌入式Linux操作系统 用户可以在这个系统平台上进行自主软件开发 嵌入式系统及其开发应用 第二版 13 5 1基本原理 AT91RM9200具有如下资源及接口 16KB数据Cache 16KB指令Cache 写缓冲区 虚拟内存管理单元NMU 带有Debug调试的在片Emulator 中级执行嵌入式TraceMacrocell 16KB的内部SRAM和128KB的内部ROM 外部总线接口 EBI 支持SDRAM SRAM BurstFlash和CompactFlash SmartMediaandNANDFlash的无缝连接 增强型的时钟产生器和电源管理单元 带有两个PLL的两个在片振荡器 慢速的时钟操作模式和软件电源优化能力 嵌入式系统及其开发应用 第二版 14 5 1基本原理 4个可编程的外部时钟信号 包括周期性中断 看门狗和第2计数器的系统定时器 带有报警中断的实时时钟 带有8个优先级 可单个屏蔽中断源 Spurious中断保护的先进中断控制器 7个外部中断源和一个快速中断源 4个32位的PIO控制器可以达到122个可编程I O引脚 每个都有输入控制 可中断及开路的输出能力 20通道的外部数据控制器 DMA 10 100Mbps的以太网接口 两个全速的USB2 0主接口和一个从口 4个USART 嵌入式系统及其开发应用 第二版 15 5 1基本原理 三通道16位的定时 计数器 TC 两线接口 TWI IEEE1149 1JTAG标准扫描接口 核心板各个部分的构成如图5 9所示 内存部分 1片16 8Mb数据宽度的Flash 共16MBFlash Intel28F128J3C 如有不同型号 则是完全兼容的器件 两片16M 16b数据宽度的SDRAM HY57V561620BT 如有不同型号 则是完全兼容的器件 构成64MBSDRAM 数据通信口和外部输入 输出口 底板实现了按键 UART USB和百兆位以太网等功能 嵌入式系统及其开发应用 第二版 16 5 1基本原理 图5 9SemitARM9200开发板中的核心板的构成 嵌入式系统及其开发应用 第二版 17 5 1基本原理 5 1 2宿主机开发环境SemitARM9200开发板可采用串口调试 操作系统经过修改可以实现以太网口调试 宿主机和目标板的处理器一般都不相同 宿主机为Intel或AMD处理器 而目标板 例如本开发板 的处理器为ATMELAT91RM9200 GNU编译器提供这样的功能 在编译时可以选择开发所需的宿主机和目标机 从而建立开发环境 所以在进行嵌入式开发前的第一步工作就是要安装一台装有指定操作系统的PC作为宿主开发机 宿主机上的操作系统一般要求安装Linux 但Linux有多个发行版本 本系统推荐使用Redhat9 0作为本开发板的宿主机PC操作系统 http www linuxiso org可以下载 然后要在宿主机上建立交叉编译调试的开发环境 环境的建立需要许多软件模块协同工作 这是一个比较繁杂的工作 为此SemitARM9200实验系统提供了一套光盘 含有开发软件包及GNU编译工具 装载后安装工作完全自动完成 嵌入式系统及其开发应用 第二版 18 5 1基本原理 当开发环境安装完毕后 会在根目录下生成两个目录 工作目录 home arm和交叉编译环境目录 usr local arm 嵌入式开发通常要求宿主机配置有网络 支持NFS 为交叉开发时mount所用 支持TFTP服务器 为下载映像文件所用 等 这些将在后面介绍 1 安装步骤建议完全安装Redhat9 0Linux操作系统 http www linuxiso org提供下载 可以使用系统所附光盘启动安装Redhat9 0Linux 刚开始安装不久 安装向导会弹出对话框询问安装服务器或工作站等 请选择自定义 Custom 安装过程中可以指定PC上网卡的IP地址 因为本开发板在烧写时默认的IP为192 168 0 23 所以建议宿主机IP地址也配置在此网段 192 168 0 X IP地址可以在安装时指定 也可以在PC安装好以后指定IP 在配置防火墙 Firewall 时 选择不安装防火墙 NoFirewall 在选择软件Package时 选择最后一项 Everything 即完全安装 完全安装完以后 大概占用4 8GB的硬盘空间 嵌入式系统及其开发应用 第二版 19 5 1基本原理 最后选择Linux启动以后进入X模式还是文本模式 这个可以根据自己的爱好决定 进入文本模式时 启动花费的时间少一些 即使进入XWindows 也可以按Ctrl Alt Fx x在默认情况下可以是1 2 6 组合键 输入安装RedHat时设置的用户名 root或已经建立的其他用户 和密码 即可进入操作系统的Shell提示符 如 root localhostroot 注意 安装完成以后也可以修改 etc inittab文件来选择进入XWindows还是进入字符模式 将系统附带的光盘插入光驱 然后执行以下命令 若主机系统是Redhat9 0 一般会自动识别并mount 挂载 插入的光盘 嵌入式系统及其开发应用 第二版 20 5 1基本原理 cd mnt 进入mnt目录mkdircdrom 建立cdrom目录mount dev cdrom mnt cdrom mount插入的光盘cd mnt cdrom 进入CDROM所在目录 arminst 执行安装程序回车 开始安装嵌入式实验系统软件注意 进入中文环境是为了能够看到安装启动时的一些中文提示信息 若没有中文环境也无所谓 只是会看到一些乱码而已 用户只需输入y并按回车键即可完成全部安装 建议在安装前启动时就将串口线连好 安装时 当前用户必须是root 执行完毕后 会在根目录下生成工作目录 home arm 该目录含有Linux内核 应用程序源代码及各个工具软件 嵌入式系统及其开发应用 第二版 21 5 1基本原理 安装完系统后 安装程序自动配置Minicom终端程序 通常在宿主机上用Minicom观察开发板输出到串口的调试信息 也可以通过串口向开发板发送命令 Minicom类似于Windows下的超级终端程序 用串口线连接SemitARM9200开发板的ttys0和宿主机的COM1 在宿主机任意目录下执行minicom 然后给开发板上电 就可以看到开发板启动时显示出来的信息 开发板启动后运行一个简化的shell进程 可以接受用户的控制 使用者可以输入一些简单的命令 如cd ls来查看片上文件系统 运行程序直接输入程序名 bin下面都是可执行程序 用ps命令可以查看系统正在运行的进程 SemitARM9200开发板要求minicom设置COM1为所选串口 波特率为115200bps 无硬件流控 8位数据位 1位停止位 无奇偶校验 即8N1 注意 串口线 JTAG线严禁带电拔插 嵌入式系统及其开发应用 第二版 22 5 1基本原理 2 NFS服务器的配置首先在RedhatLinuxPC上shell提示符 root 下输入setup命令 弹出如图5 10所示的菜单 选择Systemservices项 按回车键进入系统服务选项菜单 选中 nfs项 然后退出setup界面返回命令提示符 vim etc exports将这个默认的空文件修改为只有如下一行内容 rw 即根目录可读写 和 rw 之间要留空格然后保存退出 wq 执行如下命令启动NFS服务 etc rc d init d nfsrestart或servicenfsrestartShuttingdownNFSmountd OK ShuttingdownNFSdaemon OK ShuttingdownNFSquotas OK 嵌入式系统及其开发应用 第二版 23 5 1基本原理 ShuttingdownNFSservices OK StartingNFSservices OK StartingNFSquotas OK StartingNFSdaemon OK StartingNFSmountd OK 启动完成后 推荐采用在PC上mount本机看是否成功来判断NFS是否已经配好 例如 在PC的根目录下执行 假定PC的IP地址配置为192 168 0 22 mount192 168 0 22 mnt然后到 mnt 目录下看是否可以列出所指定的IP的机器 可以是本机 当然也可以测试其他机器是否可以被mount 根目录 下的所有文件和目录 如果可以 则说明mount成功 NFS配置成功 嵌入式系统及其开发应用 第二版 24 5 1基本原理 3 TFTP服务器的配置在PC上执行setup 选择Systemservices项 将其中的tftp一项选中 出现 表示选中 并去掉ipchains和iptables两项服务 即去掉它们前面的 号 如图5 11所示 最后 退出setup 执行如下命令以启动TFTP服务 servicexinetdrestart配置完成后 建议简单测试一下TFTP服务器是否可用 即在本机上tftp自己 例如 在PC上执行 cd cp etc inittab tftpboot 复制一个文件到 tftpboot目录下以供下面使用tftp命令下载 嵌入式系统及其开发应用 第二版 25 5 1基本原理 下面以etc inittab文件为例进行说明 tftp192 168 0 22tftp getinittab如果在 tftpboot目录里没有下载的文件 会提示没有找到相关文件 若出现如下信息 Received741512bytesin0 7seconds就表示TFTP服务器配置成功了 在根目录下就会有刚才下载的inittab文件存在了 若弹出信息为 Timedout 则表明未成功 建议用如下命令查看tftp服务是否开通 netstat a greptftp若TFTP服务器没有配置成功 需要按照上述步骤重新检查一遍 嵌入式系统及其开发应用 第二版 26 5 1基本原理 图5 10NFS的配置 图5 11TFTP服务的配置 嵌入式系统及其开发应用 第二版 27 5 1基本原理 4 关闭防火墙输入setup 选择Firewallconfiguration项 选中Nofirewall项 关闭防火墙 如图5 12所示 说明 RedhatLinuxPC自测mount成功也不能完全说明NFS就可以工作了 因为还有一个防火墙的问题 为此建议读者在安装RedhatLinux时默认选择Nofirewall 但若读者没有这样选择的话 REDHAT启动时会加载防火墙规则 这样就能自测mount 但其他PC和开发板也无法mount这台PC 注意 setup里面的防火墙显示永远都是HIGH 这个一直是Redhat的一个小BUG 即使安装时默认选择了Nofirewall setup里面也照样会显示防火墙设置为HIGH 这个可以不必理会 只要选择了一次Nofirewall就可以了 嵌入式系统及其开发应用 第二版 28 5 1基本原理 有时根目录不让读 写 建议在PC的命令提示符下执行chmod777 试试 Redhat在加入网关设置后 网络建立TCP链接非常慢 如FTP TELNET NFS等都是 建立链接后 以太网通信还是很快的 若安装网络时加入了网关 就会出现在开发板操作NFSmountRedhatPC时 输入mount onolockXXX XXX XXX XXX mnt后非常长的时间不返回Shell提示符 就一直停在那里 这是因为建立连接的时间非常长 遇到这种情况 建议在RedhatLinuxPC上执行 routedeldefault即去掉网关 然后再进行NFSmount等操作就会非常快了 测试NFS 必须用以太网将开发板和RedhatLinuxPC连接起来才行 连接的方式有两种 一是开发板和PC都用普通的网线接到Hub或者交换机上 二是用交叉网线将开发板和PC 嵌入式系统及其开发应用 第二版 29 5 1基本原理 图5 12防火墙的配置 嵌入式系统及其开发应用 第二版 30 5 1基本原理 直接连起来 不过一定要注意这种网线是特制的 其内部收发是交换的 即一头按普通网线的做法 另一头把1和3 2和6交换一下 测试开发板和PC网络是否连通的方式是 开发板正常启动Linux后 在minicom里面ping一下PC看是否连通 当然 用PC来ping开发板看是否接通也是可以的 注意 开发板必须启动Linux后才能ping通 开发板处在bootloader阶段一般是无法ping通的 即使这时开发板的bootloader初始化了以太网也不行 在一般情况下 如果不设置网关 使用ping命令时 需要开发板和PC在同一个网段 嵌入式系统及其开发应用 第二版 31 5 1基本原理 若开发板跟PC的网络不通 则mount报错信息为 mount onolock192 168 0 22 mntmount RPC Unabletoreceive eNrno NorouteFohostmount Sfsmountfailed Badfiledescriptormountprogramdidn tpassremoteaddress mount Mounting192 168 0 22 on mntfailed Invalidargument 关于TFTP服务安装的问题 有些读者在安装RedhatLinux时 没有在Custom Packages中选择everything 导致没有安装TFTP服务 典型的情况是 安装完成后没有 tftpboot目录 setup systemservices里面也没有tftp选项 这时若要重新完全安装就太麻烦了 可采用如下单独安装TFTP的方法 rpm ivhfoo 1 0 5 i386 rpm其中 foo 1 0 5 i386 rpm在Redhat9 0Linux操作系统的安装光盘里面 嵌入式系统及其开发应用 第二版 32 5 1基本原理 说明 按照上面方法把PC上的Linux安装和配置好 就可以把系统提供的开发板的源代码包安装到PC上了 如果没有配置好上面的TFTP服务 则SemitARM9200开发板就没有办法使用TFTP通过以太网下载映像文件 如果上面的NFS没有配置好 则下面开发的应用程序就没有办法使用NFS服务 这一项虽然不是必须的 但是有了这一项服务 可以大大方便调试应用程序的开发 嵌入式系统及其开发应用 第二版 33 5 1基本原理 5 1 3文件与目录结构1 光盘目录介绍系统光盘的主目录内容如下 SEMIT tar gz 整个软件源代码和编译器的压缩包 arminstall 安装脚本文件 可以在Shell提示符下输入vi来打开 进入光盘目录以后 输入 arminstall 就会提示安装上面提到的tgz扩展名的文件 并且安装相应的编译器和复制minicom的设置文件 doc ARM9嵌入式系统 无线通信开发平台实验指导书V1 2 及其他芯片资料 嵌入式系统及其开发应用 第二版 34 5 1基本原理 2 安装开发环境软件包启动PC上的Redhat9 0Linux操作系统 并将产品附带的光盘插入光驱 然后执行以下命令 mount dev cdrom mnt 挂载光盘cd mnt arminstall 执行安装脚本在安装的过程中会显示一些提示信息 注意 执行完毕后 会在根目录下生成工作目录 home arm 内含Linux内核 蓝牙协议栈和应用程序 IEEE802 11g模块驱动源码及bootloader 安装完光盘提供的源代码文件和交叉编译环境以后 执行 cd 回到其他目录才能卸载光盘umount mnt 卸载光盘现在可以取出光盘了 嵌入式系统及其开发应用 第二版 35 5 1基本原理 3 安装光盘后的目录介绍安装光盘以后 会在PC的 home目录下生成名称为arm的目录 并且把编译器安装到该目录下指定的路径中去 同时在根目录下生成 SEMIT Project 的应用程序目录 home arm linux 2 4 19 rmk7Linux的内核 home arm bluez蓝牙协议栈和应用程序 home arm driverIEEE802 11g模块的驱动源码 home arm bootloader SEMIT平台的引导代码 可以通过修改这些源码来修改bootloader tftpboot 其下是编译好的映像文件或者可执行文件 其中 zImage是编译好的Linux内核映像文件 u boot bin是编译好的引导程序二进制代码 ramdisk image4ppp gz是ramdisk文件系统压缩的映像文件 TECH burn cmd是烧写时要用到的一些命令 已经把相关命令写到此文本文件中了 嵌入式系统及其开发应用 第二版 36 5 1基本原理 minirc dfl本开发板启动时默认的串口终端配置 使用第一个串口 ttyS0 如果在串口设置时出了问题 可以把此文件复制到PC的 etc目录中 然后退出minicom 再重新进入minicom即可 注意 这里的bootloaderforAT91RM9200分为如下3个 AT91RM9200 Loader 生成loader bin 在CPU内部SRAM中运行 这个可从home arm bootloader AT91RM9200 Loader目录下的ld文件 ld script 中看出 MEMORY ram ORIGIN 0 x200000 LENGTH 0 x3000 上面这个0 x200000就是INTERNALSRAM的地址 嵌入式系统及其开发应用 第二版 37 5 1基本原理 SECTIONS text stext text rodata ALIGN 4 etext ram data sdata data glue 7 ALIGN 4 edata ram bss sbss bss ALIGN 4 ebss ram 嵌入式系统及其开发应用 第二版 38 5 1基本原理 simple boot 生成boot bin 烧到Flash上运行 u boot 0 4 8 生成u boot bin 可在SDRAM中运行 实际应用是烧到Flash上 由上面的boot bin加载到SDRAM中运行 嵌入式系统及其开发应用 第二版 39 5 1基本原理 5 1 4Linux系统的配置编译和文件系统嵌入式Linux内核及设备驱动全部源代码 光盘安装后建立完备的开发环境 交叉编译的工具集被放置到 usr local arm 2 95 3目录下 其中GNU工具集列于表5 3中 编译内核的命令如下 cd home arm linux 2 4 19 rmk7makezImage编译完成后 就会自动把zImage复制到 tftpboot 目录下以供TFTP下载 如果需要对内核进行配置和裁剪 可以在 home arm linux 2 4 19 rmk7目录下输入如下指令 makemenuconfig这时将出现如图5 13所示的内核和驱动模块的配置界面 在这里可以对内核和驱动模块进行选择和设置 嵌入式系统及其开发应用 第二版 40 5 1基本原理 表5 3GNU工具集 嵌入式系统及其开发应用 第二版 41 5 1基本原理 图5 13内核和驱动模块的配置界面 嵌入式系统及其开发应用 第二版 42 5 1基本原理 若对系统类型进行设置 则出现如下内容 SystemType AT91RM9200 based ARMsystemtype AT91RM9200Implementation SMDK MERITECHBOARD changeAIJIAT91RM9200USBfunctionsupport ProcessorType ARM920TCPUidle ARM920TI Cacheon ARM920TD Cacheon ForcewritethroughcachesonARM920T SupportThumbinstructions experimental 嵌入式系统及其开发应用 第二版 43 5 1基本原理 完成设置后 退出 保存设置 然后执行makezImage命令 即可编译生成所定制的内核映像文件 并自动复制到 tftpboot 目录下以供烧写 如果想了解编译的过程 可输入如下命令把编译过程重新定向到log文件进行观察 makezImage log 把编译信息输出到文件log中vimlog即可看到完整的编译过程 嵌入式系统及其开发应用 第二版 44 5 1基本原理 5 1 5Linux系统在地址空间中的位置开发板地址空间的分布 MemoryMap 如图5 14所示 AT91RM9200提供了8个外部片选引脚用于外部寻址 即nGCSn 0 7 每个片选都指定了固定的地址 其固定间隔为256MB 图5 15给出了整个32位的4GB地址空间的分布情况 其中除了8个外部总线接口 EBI ExternalBusInterface 外 还包括内部存储器 InternalMemory 外设 Peripheral 及尚未定义 Undefined 的地址空间 内部存储器和尚未定义的地址分布如图5 16所示 嵌入式系统及其开发应用 第二版 45 5 1基本原理 图5 14开发板地址空间分布 嵌入式系统及其开发应用 第二版 46 5 1基本原理 AT91RM9200提供了8个外部片选引脚用于外部寻址 即nGCSn 0 7 每个片选都指定了固定的地址 其固定间隔为256MB 图5 15给出了整个32位的4GB地址空间的分布情况 其中除了8个外部总线接口 EBI ExternalBusInterface 外 还包括内部存储器 InternalMemory 外设 Peripheral 及尚未定义 Undefined 的地址空间 内部存储器和尚未定义的地址分布如图5 16所示 嵌入式系统及其开发应用 第二版 47 5 1基本原理 图5 15整个32位的4GB地址空间的分布情况 嵌入式系统及其开发应用 第二版 48 5 1基本原理 图5 16内部存储器和尚未定义的地址分布 嵌入式系统及其开发应用 第二版 49 5 1基本原理 外设部分的空间被映射到0 xFFFFF000 0 xFFFFFFFF之间的4KB地址空间上 每个外设拥有256或者512字节 其详细的分布情况请参见光盘中CPUManual第32页的图6SystemPeripheralsMapping 本开发板内存由两片16M 16b数据宽度的SDRAM构成 两片拼成32位模式 公用nGCS1 共64MBRAM 起始地址为0 x20000000 nGCS0接的是1片8M 16b数据宽度的INTELE28F128Flash 起始地址为0 x10000000 其中内核zImage烧写在地址0 x10040000开始处 根文件系统RAMDISK烧在0 x10240000地址处 INTELE28F128J3A 150Flash的单片16MB 共128个扇区 每个扇区都是128KB大小 均匀分布 嵌入式系统及其开发应用 第二版 50 5 1基本原理 5 1 6中断AT91RM9200开发板上扩展的外设接口占用片选和中断情况见表5 4 中断资源列于表5 5 由该表可以看出 AT91RM9200提供了7路外部中断和1路FIQ 表5 4外设接口占用片选和中断情况 嵌入式系统及其开发应用 第二版 51 5 1基本原理 表5 5AT91RM9200的中断资源 嵌入式系统及其开发应用 第二版 52 5 1基本原理 在Linux里面request irq所需要的中断向量号 也就是表5 5中左边一行的数值 在ARMLinux内核中有如下的定义 linux 2 4 19 rmk7 include asm arch irqs hARMlinux都是统一在这个地方定义的 但对于9200它放到下面这个文件里 linux 2 4 19 rmk7 include asm arch AT91RM9200 h defineAT91C ID FIQ 0 AdvancedInterruptController FIQ defineAT91C ID SYS 1 SystemPeripheral defineAT91C ID PIOA 2 ParallelIOControllerA defineAT91C ID PIOB 3 ParallelIOControllerB defineAT91C ID PIOC 4 ParallelIOControllerC defineAT91C ID PIOD 5 ParallelIOControllerD defineAT91C ID US0 6 USART0 defineAT91C ID US1 7 USART1 嵌入式系统及其开发应用 第二版 53 5 1基本原理 defineAT91C ID US2 8 USART2 defineAT91C ID US3 9 USART3 defineAT91C ID MCI 10 MultimediaCardInterface defineAT91C ID UDP 11 USBDevicePort defineAT91C ID TWI 12 Two WireInterface defineAT91C ID SPI 13 SerialPeripheralInterface defineAT91C ID SSC0 14 SerialSynchronousController0 defineAT91C ID SSC1 15 SerialSynchronousController1 defineAT91C ID SSC2 16 SerialSynchronousController2 defineAT91C ID TC0 17 TimerCounter0 defineAT91C ID TC1 18 TimerCounter1 defineAT91C ID TC2 19 TimerCounter2 嵌入式系统及其开发应用 第二版 54 5 1基本原理 defineAT91C ID TC3 20 TimerCounter3 defineAT91C ID TC4 21 TimerCounter4 defineAT91C ID TC5 22 TimerCounter5 defineAT91C ID UHP 23 USBHostport defineAT91C ID EMAC 24 EthernetMAC defineAT91C ID IRQ0 25 AdvancedInterruptController IRQ0 defineAT91C ID IRQ1 26 AdvancedInterruptController IRQ1 defineAT91C ID IRQ2 27 AdvancedInterruptController IRQ2 defineAT91C ID IRQ3 28 AdvancedInterruptController IRQ3 defineAT91C ID IRQ4 29 AdvancedInterruptController IRQ4 defineAT91C ID IRQ5 30 AdvancedInterruptController IRQ5 defineAT91C ID IRQ6 31 AdvancedInterruptController IRQ6 在开发板的minicom终端可以通过如下命令查看板上的中断信息 catproc interrupts 嵌入式系统及其开发应用 第二版 55 5 1基本原理 5 1 7通用输入 输出接口和总线1 通用输入 输出接口通用输入 输出 GPIO GeneralPurposeInput Output 是一种总线扩展器 当微控制器或芯片组没有足够的I O端口 或系统需要采用远端串行通信或控制时 GPIO接口能够提供额外的控制和监视功能 AT91RM9200提供了128路复用的I O口线 分为如下端口进行管理 PortA GPA 32路输入 输出口线 PortB GPB 32路输入 输出口线 PortC GPC 32路输入 输出口线 PortD GPD 32路输入 输出口线 核心板已经将这些复用的信号引脚中未被占用的全部引到底板上来了 嵌入式系统及其开发应用 第二版 56 5 1基本原理 2 总线AT91RM9200的内部地址为32位 外部地址为27位 数据总线宽度为32位 主频最高达180MHz 总线信息速率最高达100Mbps 若外接8位或16位数据宽度的外设芯片 与CPU相接时 本开发板的数据总线宽度是可配置的 分别为32位 16位或8位模式 在BWSCON中的BW位实现设置 具体方法请参见系统所配光盘中AT91RM9200XUser sManual的MemoryController 在给外设分配片选时 设置好它的BWSCON中的这两位 在访问它的地址时就可以改变数据宽度 若设置16位数据宽度模式 则低16位数据线有效 若设置8位数据宽度模式 则最低8位数据线有效 嵌入式系统及其开发应用 第二版 57 5 1基本原理 注意 启动时上述设置对CS0是无效的 因为CS0连接存放启动代码的存储器片选 存储启动代码的存储器一般都是Flash 在CPU刚加电时 其数据宽度无法用BWSCON来设置 只有硬件实现 即由复位后硬件配置决定数据的宽度 复位默认为0 x00000000 两片SDRAM为32位寻址 但两片SDRAM的数据总线分别接本开发板的高16位和低16位数据总线 这样拼成32位SDRAM使用 所以两片SDRAM共享一个CS 而一片Flash则固定为16位数据读 写访问模式 只接本开发板的低16位数据总线 嵌入式系统及其开发应用 第二版 58 5 1基本原理 5 1 8在开发板上开发应用程序在本实验系统中 宿主机是一台运行Linux的PC 目标板为SemitARM9200开发板 应用程序的开发有两种模式 下面分别介绍 模式1 先在宿主机上调试通过后 再移植到目标板 SemitARM9200开发板 上 移植的工作包括两个方面 函数库的问题 在程序移植时可能会有函数未定义的问题 对于这种问题 一般要求开发者自己编制这些要用到却又未定义的函数 要修改Makefile以选择适合目标板的编译工具 模式2 直接在目标板上进行开发 建议采用通用开发模式 将宿主机和目标板通过以太网连接 在宿主机上运行minicom作为目标板的显示终端 在目标板上通过NFS来mount宿主机硬盘 让应用程序直接运行在目标板上进行调试 嵌入式系统及其开发应用 第二版 59 5 1基本原理 这种直接TARGET开发模式下的开发流程如图5 17所示 在直接TARGET开发模式下 也可以通过U盘调试法进行应用程序的开发调试 这时需要有USBhost的支持 其流程如图5 18所示 模式2的具体步骤如下 取消U盘的写保护 连接到宿主机上 执行以下命令 mount dev sda1 mntcd mntcp ARM9200 applications hello hello ARM9200 applications hello hello是要调试的应用cd umount mnt取下U盘 插入开发板的USB接口 执行以下命令 mount dev sda1 mntcd mnt hello就可以看到程序在开发板上运行的情况 调试成功以后 把应用程序添加到ramdisk文件系统映像中 制作好以后下载 烧写新的ramdisk映像文件 嵌入式系统及其开发应用 第二版 60 5 1基本原理 图5 17在直接TARGET开发模式下的开发流程 嵌入式系统及其开发应用 第二版 61 5 1基本原理 图5 18通过U盘在直接TARGET开发模式下的开发流程 嵌入式系统及其开发应用 第二版 62 5 1基本原理 5 1 9如何创建自己的应用代码编写前应多阅读类似的应用程序代码或从网络上查找相关代码下载后阅读 函数调用可参见相关的参考书 如 UNIX环境高级编程 虽然该书中所述为UNIX环境开发 但与Linux基本类似 具体应用到Linux时请使用man查看帮助 在程序移植时 可能会有函数未定义的问题 这时一般要求开发者自己编制这些要用到却又未定义的函数 Linux下的应用程序全部都是用C代码开发的 用C代码开发应用程序 首先遇到就是C库的问题 对于本开发板这种带有MMU处理器平台上的Linux而言 就和RedhatLinux中的PCLinux完全一样 用的都是glibc 只不过是用不同的编译器编译而已 本开发板提供了编译好的glibc库的动态库 so文件 和静态库 a文件 安装在 usr local arm 2 95 3 arm linux lib目录下 在应用程序中指定了编译器的路径后 就会自动链接这些库文件 Makefile可以参考 SEMIT Project下某个目录中的Makefile 嵌入式系统及其开发应用 第二版 63 5 1基本原理 下面举例说明在根目录下创建hello目录 编辑一个hello c文件 cd mkdirhellovihello c添加如下内容 includeintmain printf HelloWorld n return0 hello c只是打印串口Helloworld 字符串 编写Makefile文件编译器要用 usr local arm 2 95 3 bin arm Linux gcc 以下是它的Makefile文件 嵌入式系统及其开发应用 第二版 64 5 1基本原理 CC usr local arm 2 95 3 bin arm linux gccCFLAGS DDEBUG D Linux gall hellohello hello o CC CFLAGS o clean rm rf ohello然后执行make 在hello目录下生成可执行文件hello 最后将生成的可执行文件加入Linux文件系统中 重新制作ramdisk文件系统映像并烧写Flash 嵌入式系统及其开发应用 第二版 65 5 1基本原理 5 1 10加入应用程序的ramdisk文件系统映像制作按前述方法将生成的可执行文件加入Linux文件系统中 重新制作ramdisk文件系统映像并烧写Flash 就可以进行加入应用程序的ramdisk文件系统映像制作了 其中 tftpboot ramdisk image4ppp gz为Linux的文件系统映像压缩文件 用户可以在文件系统中加入自己的应用 例如 可以将ramdisk image4ppp gz复制到根目录下 新建一个ramdisk目录并解开ramdisk image4ppp gz 具体方法如下 cpramdisk image4ppp gz cd mkdirttttgunzip ramdisk image4ppp gz 嵌入式系统及其开发应用 第二版 66 5 1基本原理 此时根目录下会生成ramdisk image4ppp 为解开后的Linux的文件系统映像文件 再将该文件系统映像文件mount到新建目录tttt中 mount oloopramdisk image4ppp tttt此时用户可以加入自己的应用程序h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论