




已阅读5页,还剩90页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 嵌入式嵌入式 LinuxLinux 系统设计与开发系统设计与开发 实验指导书实验指导书 计算机学院 2010 年 4 月 2 嵌入式嵌入式 LINUXLINUX 系统设计与开发系统设计与开发 实验指导书纲要实验指导书纲要 1 1 目的 目的 辅助 嵌入式 linux 系统设计与开发 理论教学 提高学生嵌入式方向的实验 实践操作 能力及创新开发能力 2 2 内容 内容 章节主要知识点实验内容实训目标及要求 学 时 实 验 性 质 实 验 级 别 第一章 嵌入式 linux 开 发基础 1 开发平台简介 2 开发流程 3 构建嵌入式 linux 系统的环 境 1 熟悉嵌入式科研教学 平台 UP Techpxa270s 的使用 2 构建嵌入式 linxu 系 统开发环境 3 通过 minicom 或超级 终端进行宿主机及开 发板的通讯并查看开 发板系统目录 1 掌握嵌入式 LINXU 系统开发流程 2 掌握软硬件开发环 境的建立及使用 2 验 证 性 必 做 第二章 嵌入式 linux 系 统基础 1 Makefile 编写 2 Linux 多线程库 编程 3 进程应用程序设 计 1 Makefile 与 Helloworld 2 生产者 消费者协 议 3 进程管理模拟实验 1 熟练掌握 makefile 写法 2 掌握 linux c 程序 开发 具有使用多 线程编程能力 3 掌握进程应用程序 的设计与实现 3 综 合 性 必 做 第三章 嵌入式 linux 内 核 1 Bootloader 引导 系统 2 Linux 内核定制 裁剪及添加 3 文件系统的构建 1 Blob 的重新烧写 2 Linux 内核裁剪及编 译 3 文件系统的构建 1 理解 ARM 的初始化 及引导过程 2 熟练掌握内核定制 裁剪及添加 3 掌握 busybox 构建 文件系统 6 设 计 性 必 做 第四章 嵌入式 linux 接 口设计 与驱动 程序 1 驱动程序结构 2 Framebuffer 机 制 3 触摸屏 4 V4L 5 IDE CF 6 Usb 1 虚拟驱动模块实验 2 Lcd 控制实验 3 Tslib 移植和使用 4 Linux 视频 V4L 驱动 实验 5 CF 模块 U 盘接口实 验 1 熟练掌握驱动程序 结构 2 读懂并理解触摸屏 LCD 等驱动程序 与测试程序的设计 与编写 6 综 合 性 选 做 3 第五章 嵌入式 linux 开 源软件 移植与 应用 1 嵌入式 web 服务 器 goahead 2 嵌入式数据库 SQLite 3 嵌入式媒体播放 器 Mplayer 4 Web 服务 gSOAP 5 Web 浏览器 Konqueror 6 开源软件移植的 一般过程与注意 事项 1 嵌入式 web 服务器 goahead 实验 2 SQLite 移植实验 3 Mplayer 到 ARM 平台 上的移植 4 Web 服务 gSOAP 实验 5 Web 浏览器 Konqueror 移植 1 掌握开源软件移植 的一般过程 2 理解相关软件的版 本与依赖关系 包 括交叉编译器 6 综 合 性 选 做 第六章 嵌入式 linux 下 的通信 应用 1 串口通信 2 网络通信 3 蓝牙通信 4 Can 总线通信 5 GPRS GPS 通信 1 串口通信实验 2 socket 相关程序设计 3 蓝牙通信实验 4 Can 总线实验 5 GPRS GPS 通信实验 1 掌握四种常用的通 信方式 理解相关 的程序设计思路与 实现方式 2 透彻理解 can 总线 原理 熟练掌握基 于该总线下的程序 设计 6 综 合 性 选 做 第七章 嵌入式 图形界 面用户 编程 QT 1 嵌入式 GUI 2 QT QTE 移植与程 序设计 3 Qtopia 平台的移 植和编程操作 1 Qt 图形界面相关程序 设计 2 电子点菜系统 1 理解 QT QTE 与 Qtopia 的移植过程 和相应程序设计方 法 2 掌握 qt 与 qtopia 的程序设计 3 设 计 性 选 做 第八章 综合项 目实例 1 嵌入式 linux 系 统的一般设计与 开发过程 2 综合项目开发实 践 1 基于嵌入式平台的电 梯监控系统 2 基于蓝牙的无线点菜 系统 3 基于嵌入式与 web service 的智能家居 系统 1 掌握嵌入式 linux 系统一般设计与开 发过程 2 掌握按格式要求 撰写高质量的设计 与开发报告 体会 软件工程过程 3 培养学生良好的团 队协作精神 4 培养学生对实际嵌 入式项目良好的独 立思考和解决问题 的能力 设 计 性 选 做 3 参考教材 参考教材 UP TECHPXA270 S LINUX 实验指导书 博创科技 俞辉 嵌入式 linux 实验实例实例教程 机械工业出版社 4 目录目录 第一章第一章 嵌入式嵌入式 LINUX 开发基础开发基础 5 1 开发平台简介 5 2 嵌入式 LINUX 开发流程 7 实验 1 1 建立嵌入式LINUX系统开发环境 8 第二章第二章 嵌入式嵌入式 LINUX 系统基础系统基础 19 实验 2 1 MAKEFILE和 HELLO WORLD 19 实验 2 2 多线程应用程序设计 生产者 消费者协议 22 第三章第三章 嵌入式嵌入式 LINUX 内核内核 26 实验 3 1 引导装载程序 BOOTLOADER 移植实验 BLOB 26 实验 3 2 LINUX 内核移植与编译实验 33 实验 3 3 文件系统实验 36 第四章第四章 嵌入式嵌入式 LINUX 接口设计与驱动程序接口设计与驱动程序 44 实验 4 1 虚拟驱动模块实验 44 实验 4 2 LCD 控制实验 50 实验 4 3 触摸屏驱动实验 58 实验 4 4 IDE CF 卡模块读写实验 63 实验 4 5 U 盘接口实验 66 第五章第五章 嵌入式嵌入式 LINUX 开源软件移植与应用开源软件移植与应用 70 实验 5 1 嵌入式WEB服务器GOAHEAD实验 70 实验 5 2 SQLITE移植实验 71 实验 5 3 MPLAYER到 ARM 平台上的移植 72 实验 5 4 WEB服务GSOAP 实验 72 实验 5 5 WEB浏览器 KONQUEROR移植 73 第六章第六章 嵌入式嵌入式 LINUX 下的通信应用下的通信应用 75 实验 6 1 串行端口程序设计 75 实验 6 2 网络传输实验 77 实验 6 3 蓝牙无线通讯实验 79 实验 6 4 CAN 总线实验 86 第七章第七章 嵌入式图形界面用户编程嵌入式图形界面用户编程 QT 88 实验 7 1 QT图形界面相关实验 88 实验 7 2 89 实验 7 3 91 第八章第八章 综合项目实例综合项目实例 93 实验 8 1 93 实验 8 2 94 实验 8 3 94 5 第一章第一章 嵌入式嵌入式 linux 开发基础开发基础 1 开发平台简介开发平台简介 嵌入式linux系统的实验实践教学中 使用的是pxa270平台 如图 图1 1为up techpxa270s实验箱正视图 基于Intel XSCALE 架构最新的PXA270 嵌入式微处理器最高主频可达624MHz 加入了 Wireless MMX 技术 大大提升了多媒体处理能力 同时PXA270 还加入了Intel SpeedStep动 态电源管理技术 在保证CPU 性能的情况下 最大限度地降低移动设备功耗 PXA270可以广泛 应用于PDA 智能手机 PMP 产品中 图1 1 Up techpxa270 S实验箱正视图 博创科技的UP TECHPXA270 教学科研平台主要是面向计算机 软件专业的高端平台 微处 理器主频稳定运行在520MHz 可运行WinCE5 0 和Linux 2 6 x 操作系统 支持QT E miniGUI 等嵌入式图形界面 提供完整的驱动和应用程序 UP TECHPXA270 教学科研平台由处理器核心板 主板及LCD 三部份组成 UP TECHPXA270 核心模块资源 核心模块资源 基于Intel XScale 架构内核的嵌入式处理器PXA270 内部集成iwmmx 指令 加速处理 器对多媒体数据的 处理速度 系统稳定工作在520MHZ 主频 64MB SDRAM 16MB Nor Flash 64MB Nand Flash 库 6 UP TECHPXA270 主板资源 10M 100M 以太网 AC97 音频接口 8 TFT LCD 分辩率为640 x480 VGA 接口 USB 主 host 接口4 个 从 device 接口1 个 CF 卡接口 IDE 接口 SD 卡接口 PCMCIA 接口 可以扩展有线 无线网路接口等 PS2 鼠标键盘接口 CMOS 摄像头接口 触摸屏 四线电阻式 2 个RS232 标准串口 JTAG 接口 包括14Pin 和20Pin 标准 32 位扩展总线接口 和UP NetARM2410 UP NetARM2410 S 平台兼容 irDA 接口 实时时钟 IIC SPI 接口 开箱指南开箱指南 博创科技UP TECHPXA270 教学科研平台包含以下部分 开发板 电源 网线 串口线 并口线 并口JTAG 转换线 随机附带光盘 UP TECHPXA270 软件资源 软件资源 bootloader blob 操作系统 linux 2 4 x 和linux 2 6 x 内核 UP TECHPXA270 应用软件 应用软件 mplayer 媒体播放器 实现MPEG4 AVI WMV 等多种媒体解码 GUI QT E miniGUI 摄像头视频采集 硬件连接硬件连接 1 1 UP TECHPXA270UP TECHPXA270 外围端口说明外围端口说明 电源 电源输入插座 直流电9V 12V 输入 串口1 对应了PXA270 处理器的Bluetooth 功能的串口 三线串口标准 串口0 对应了PXA270 处理器的全功能串口 九线串口标准 VGA 接口 可以直接和显示器 投影仪等连接 DB19 阴性插座标准 USB 主控 host 端口4 个 包括过流保护和ESD 保护 支持热插拔 主板上FPGA 使用Altera 公司的cyclone 系列EP1C3T144 USB 设备 device 端口 8 10 100M 自适应以太网接口 主板上FPGA 的编程接口 pxa270 的JTAG 接口 包括14Pin 和20Pin 两种标准 LCD 背光逆变器模块 注意高压 12 168Pin 扩展总线插座 13 6x6 键盘扫描接口 7 14 PS 2 鼠标键盘接口 15 触摸屏接口 16 CF 卡接口 此CF 卡工作在IDE 模式 和背面的IDE 硬盘接口公用一个IDE 通道 默 认情况下CF 为主IDE 设备 IDE 硬盘为从IDE 设备 17 扩展LCD 接口 支持TFT CSTN 等LCD 模式 18 MMC 卡接口 19 板载MIC 接口 当音频插座连接以后 MIC 输入自动切换到音频插座 20 音频输入输出插座 21 音量调节电位器旋钮 22 PCMCIA 接口 通过转接器可以支持CF 卡 23 复位按钮 24 电源按钮 其工作模式类似于ATX 电源 系统插上电源 按一下此轻触开关 系统上 电 再按一下此轻触开关 系统电源关闭 当系统起来以后 可以通过控制FPGA 寄存器 死锁电源按钮 即 单击轻触开关 对系统没有影响 但是 可以通过长按此开关3 秒 钟 使系统电源关闭 2 2 系统硬件资源分配 系统硬件资源分配 外设说明 bank 物理地址范围总线 中断 数 Nor flash 系统启动 存储操做系 统内核 参数等信息 0 0 x0 0 x1000000 16 位 0 Nand Flash 系统的海量存储 1 0 x04000000 0 x0400000816 位 0 FPGA 管理系统中断等外设 2 0 x08000000 0 x0800040032 位注1 IDE 系统IDE 和CF 接口 2 0 x08800000 0 x0880004032 位 1 PCMCIA 16 位PCMCIA 接口 3 0 x20000000 0 x30000000 16 位 2 网卡 SMC91c111 10 100M 网卡芯片 4 0 x10000000 0 x10010000 32 位 1 连接系统连接系统 首先 连接电源 将随机附带的一根电源线的一头插入到UP TECHPXA270 S 的电源接口 将电源线的另外一端插入到电源插座中 然后连接串口线 一端连接PC 的串口 另一端连接 到如图1所示的串口 最后连接网线 将随即附带的灰色的网线一端连接到UP TECHPXA270 的 网口 靠近电源的 另一端连接到本地的局域网中 提示 a a UP TECHPXA270 SUP TECHPXA270 S 具有两个串口 分别为UART0UART0 和UART1UART1 在本手册中使用UART0UART0 即 下方的串口 b b 随机附带的的网线用作直接连接UP TECHPXA270 SUP TECHPXA270 S 和PCPC c c FPGAFPGA 通过PAX270 SPAX270 S 处理器的GPIO0GPIO0 扩展中断 2 嵌入式嵌入式 Linux 开发流程开发流程 在一个嵌入式系统中使用 linux 开发 根据应用需求的不同有不同的配置开发方法 但是 一般都要经过如下的过程 8 建立开发环境 操作系统一般使用 REDHAT LINUX 版本 7 到 9 都可以 选择定 制安装或全部安装 通过网络下载相应的 GCC 交叉编译器进行安装 比如 arm linux gcc arm uclibc gcc 或者安装产品厂家提供的交叉编译器 配置开发主机 配置 MINICOM 一般的参数为波特率 115200 数据位 8 位 停止位 1 无奇偶校验 软件硬件流控设为无 在 WINDOWS 下的超级终端的配置也是这样 MINICOM 软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工 具 配置网络 主要是配置 NFS 网络文件系统 需要关闭防火墙 简化嵌入式网络调 试环境设置过程 建立引导装载程序 BOOTLOADER 从网络上下载一些公开源代码的 BOOTLOADER 如 U BOOT BLOB VIVI LILO ARM BOOT RED BOOT 等 根据自己具体芯片进行移植修改 有些芯片没有内置引导装载程序 比如三星的 ARM7 ARM9 系列芯片 这样就需要编写烧写开发板上 FLASH 的烧写程序 网络 上有免费下载的 WINDOWS 下通过 JTAG 并口简易仿真器烧写 ARM 外围 FLASH 芯片的烧写程序 也有 LINUX 下的公开源代码的 J FLASH 程序 如果不能烧写自己 的开发板 就需要根据自己的具体电路进行源代码修改 这是让系统可以正常运行的 第一步 如果你购买了厂家的仿真器当然比较容易烧写 FLASH 了 这对于需要迅速 开发自己的应用的人来说可以极大提高开发速度 但是其中的核心技术是无法了解的 下载别人已经移植好的 LINUX 操作系统 如 UCLINUX ARM LINUX PPC LINUX 等 如果有专门针对你所使用的 CPU 移植好的 LINUX 操作系统那是再好不过 下载 后再添加自己的特定硬件的驱动程序 进行调试修改 对于带 MMU 的 CPU 可以使 用模块方式调试驱动 对于 UCLINUX 这样的系统好像只能编译进内核进行调试 建立根文件系统 从 下载使用 BUSYBOX 软件进行功能裁减 产生 一个最基本的根文件系统 再根据自己的应用需要添加其他的程序 默认的启动脚本 一般都不会符合应用的需要 所以就要修改根文件系统中的启动脚本 它的存放位置 位于 etc 目录下 包括 etc init d rc S etc profile etc profile 等 自动挂装文 件系统的配置文件 etc fstab 具体情况会随系统不同而不同 根文件系统在嵌入式系统 中一般设为只读 需要使用 mkcramfs genromfs 等工具产生烧写映象文件 建立应用程序的 FLASH 磁盘分区 一般使用 JFFS2 或 YAFFS 文件系统 这需要在 内核中提供这些文件系统的驱动 有的系统使用一个线性 FLASH NOR 型 512K 32M 有的系统使用非线性 FLASH NAND 型 8 512M 有的两个同时使 用 需要根据应用规划 FLASH 的分区方案 开发应用程序 可以放入根文件系统中 也可以放入 YAFFS JFFS2 文件系统中 有 的应用不使用根文件系统 直接将应用程序和内核设计在一起 这有点类似于 UCOS II 的方式 烧写内核 根文件系统 应用程序 发布产品 实验实验 1 1 建立嵌入式 建立嵌入式 linux 系统开发环境系统开发环境 一 实验目标 一 实验目标 1 熟悉 linux 操作系统的使用 2 掌握嵌入式系统开发环境的建立 9 二 预备知识 二 预备知识 掌握 linux 的基本操作 三 实验环境 三 实验环境 1 硬件 UP TECHPXA270 S 嵌入式开发板 PC 机Pentumn500 以上 硬盘10G 以上 2 软件 PC 机操作系统REDHAT LINUX federal 8 0 或 REDHAT LINUX 9 0 MINICOM ARM LINUX 开发环境 四 情景描述 四 情景描述 配置网络 配置 FTP 配置 NFS 及使用超级终端 五 实验步骤 五 实验步骤 1 1 配置网络配置网络 配置网络 包括配置IP 地址 NFS 服务 防火墙 网络配置主要是要安装好以太网卡 对于一般常见的RTL8139 网卡 REDHAT9 0 可以自动识别并自动安装好 完全不要用户参与 因此建议使用该网卡 然后配置宿主机IP 为192 168 0 121 如果是在有多台计算机使用的局 域网环境使用此开发设备 IP 地址可以根据具体情况设置 如图1 4 1 所示 图1 4 1 网络配置 双击设备eth0 的蓝色区域 进入以太网设置界面 如图1 4 2 1 4 3 所示 10 图1 4 2 以太网常规设置界面 图1 4 3 以太网路由设置界面 对于REDHAT9 0 它默认的是打开了防火墙 因此对于外来的IP 访问它全部拒绝 这样其 它网络设备根本无法访问它 即无法用NFS mount 它 许多网络功能都将无法使用 因此网络 安装完毕后 应立即关闭防火墙 操作如下 点击红帽子开始菜单 选择安全级别设置 选中 无防火墙 如图1 4 4 所示 11 图1 4 4 安全级别设置 在系统设置菜单中选择服务器设置菜单 再选中服务菜单 将iptables 服务的勾去掉 并 确保nfs 选项选中 2 2 配置配置NFSNFS 点击主菜单运行系统设置 服务器设置 NFS 服务器 英文为 SETUP SYSTEM SERVICE NFS 点击增加出现如下在界面 在目录 Drictory 中填入需要共享的路径 在主机 Hosts 中填入允许进行连接的主机IP 地址 并选择允许客户对共享目录的操作为只读 Read only 或读写 Read write 如图1 4 5 所示 12 图1 4 5 NFS 基本设置 下图1 4 6 是一些常规选项设置 可以作如下设置 图1 4 6NFS 常规设置 下图1 4 7 是对客户端存取服务器的一些其他设置 按下图设置 13 图1 4 7 NFS 用户访问设置 当将远程根用户当作本地根用户时 对于操作比较方便 但是安全性较差 最后点确定退出时 则完成NFS 配置 配置好后 界面应显示如下图1 4 8 所示 图1 4 8 配置好的NFS 我们也可以手工编写 etc exports 文件 其格式如下 共享目录 可以连接的主机 读写 权限 其他参数 例如 up techpxa270 192 168 0 rw sync 表示将本机的 up techpxa270 目录共享给ip 地址为192 168 0 1 192 168 0 254 的所有计算机 可以读取和 14 写入 修改好后保存 可以用以下命令开启nfs 服务 etc rc d init d nfs restart 配置完成后 可用如下办法简单测试一下NFS 是否配置好了 在宿主机上自己mount 自己 看 是否成功就可以判断NFS 是否配好了 例如在宿主机 目录下执行 mount 192 168 0 121 up techpxa270 mnt nfs其中192 168 0 121 应修改为您自己主机的IP 地址 然后到 mnt 目 录下看是否可以列出 up techpxa270 目录下的所有文件和目录 可以则说明mount 成功 NFS 配置成功 3 3 配置主机的配置主机的TFTPTFTP 服务服务 方法 一 用vi 打开 etc xinetd d tftp 做相应的修改 vi etc xinetd d tftp 如下图示 图 1 4 9 方法 二 键入setup 选择 System services 启用相应的服务 图 1 4 10 图 1 4 11 重启xinetd 服务 etc rc d init d xinetd restart Pxa270 板的配置 4 4 设置设置PCPC 机机minicomminicom 1 在linux 平台的X window 界面下建立一个终端 右键点击屏幕 新建终端 在终端的 命令行提示符后键入minicom 回车 您就会看到minicom 的启动画面 见图1 4 12 若没有 启动X window 则在命令行提示符后直接键入minicom 图1 4 12 minicom 启动画面 2 minicom 启动后 先按Ctrl A 键 再按Z 键 注意不是连续按 Ctrl A 松开后才按Z 进入 主配置界面 见图1 4 13 按 O 进入配置界面 见图1 17 按上下键选择Serial port setup 进入端口设置界面 这里有几个重要选项改为如下值 见图1 4 14 在Change which setting 后按哪个字母就进入哪项的配置 如按A 进行端口号配置 A Serial Device dev ttyS0 端口号使用串口1 E BPS par bits 115200 8N1 波特率 F E 硬件流 软件流都改为NO 若要使用PC 机的串口2 来接板子的串口1 做监控 改为 dev ttyS1 即可 3 选好后按ESC 键退出到图1 4 14 所示画面 选择Save setup as df1 保存退出 以后只要 启动minicom 就是该配置 无需再做改动 图1 4 13 主配置界面 图1 4 14 配置界面 图1 4 15 端口设置界面 2 通过minicom 终端对pxa270 板进行网络设置 连接好开发板连线 上电 通过PC 机minicom 口 以root 身份登陆 用ifconfig 命令查看当前开发板IP 的设置 修改 etc rc sysinit 文件中ifconfig eth0 15 192 168 0 102 为您自己想要的IP 地址 这里按照缺省的IP 设置值 192 168 0 102 3 重启开发板 通过终端从PC 机ping 目标板的IP 确保网络连线通畅 4 将主机中 up techpxa270 挂载到开发板的 mnt nfs mount o nolock 192 168 0 121 up techpxa270 mnt nfs 其中的IP 是主机的 依个人设置填写 Windows平台下设置调试串口 首先需要连接PC 串口 进行PC串口设置 连接串口至PC 相应接口 另一端连接在硬 件平台的Uart0 上 确认连接无误 打开超级终端软件 进入如下图1 13 所示界面 图1 13 填入连接名 选择图标 点击 确定 如下图1 14 所示 16 图1 14 连接时选择通讯使用串口 有的PC 可能有两个串口 使用时请确认选择已连接到平台 的串口 点击 确定 修改波特率为115200bps 数据流控制为 无 结果如下图1 15 所示 图1 15 之后点击 确定 开启PXA270 S 硬件平台电源 监视超级终端输出 等待系统启动 表示配置完毕 如下图1 16 所示 17 图1 16 挂载RAMFS 分区 RamDisk 是把内存的一部分分配作为一个分区使用 换句话说 把用户的一部分内存 作为一 个硬盘驱动器使用 用户可以格式化 挂载 保存文件等等 RAMFS 就是用于RamDisk 的文件 系统 系统按照默认方式启动的时候 会挂载一个ramfs的文件系统 tmp 使用者可以按照些下面 的 做法 在其它的挂载点上挂载其它的ramfs文件系统 mkdir p ram1 mount t ramfs none ram1 文件传输命令ftp 5 配置主机的 配置主机的ftp ftp 1 键入setup 选择system services 选项 启用vsftpd 功能 图 1 4 16 2 启用vsftpd 功能 etc rc d init d vsftpd restart 重启机器 使用ftp 服务 用命令行方式 1 用ftp 命令登陆开发板 开发板的IP 192 168 0 102 首先启动开发板的网络服务 启动后输入 inetd 然后宿主机端输入 ftp 192 168 0 102 2 以root 用户登陆 无密码 3 常用命令 cd 切换ftp 服务器的目录 bye 结束ftp 传输模式 18 dir 或ls 显示目录中的文件及子目录列表 get 下载单一文件 mget 下载多个文件 put 上传单一文件 mput 上传多个文件 pwd 显示当前目录 mkdir 添加子目录 rmdir 删除子目录 表示执行本机命令 例如 mkdir 表示在本机上建目录 六 思考题 六 思考题 19 第二章第二章 嵌入式嵌入式 linux 系统基础系统基础 实验实验 2 1 Makefile 和和 Hello world 一 实验目标 一 实验目标 1 学会使用 makefile 管理项目 2 熟悉 arm linux gcc 交叉编译的使用 二 预备知识 二 预备知识 C 语言的基础知识 程序调试的基础知识和方法 LINUX 的基本操作 三 实验环境 三 实验环境 1 硬件 UP TECHPXA270 S 嵌入式开发板 PC 机Pentumn500 以上 硬盘10G 以上 2 软件 PC 机操作系统REDHAT LINUX federal 8 0 或 REDHAT LINUX 9 0 MINICOM ARM LINUX 开发环境 四 情景描述 四 情景描述 创建一个新目录 并且编写 hello c start c 和 Makefile 等文件 之后将已经编写好 的文件下载到开发板上运行 五 实验步骤 五 实验步骤 1 建立工作目录 mkdir 01 hello cd 01 hello 2 编写程序源代码 在LINUX 下的文本编辑器有许多 常用的是vim Xwindow 界面下的gedit 等 我们在 开发过程中推荐使用vim 用户需要学习vim 的操作方法 请参考相关书籍中的关于vim 的 操作指南 本实验是在终端上打印出一个菱形 一个三角形 由 号构成 及打印一行字符hello my friends 主函数文件为start c include starfun h 20 include hello h include int main star1 star2 showhello return 0 其中所包含的头文件为 hello h starfun h stdio h 在starfun h 中定义了两个函数star1 star2 打印两个三角形 ifndef STARFUN H define STARFUN H define NUM 4 define NUMBER 3 int star1 int i j k for k 1 k NUM k for i 1 i NUM k i printf for j 1 j 0 k for i 1 i NUMBER k 1 i printf for j 1 jpthread txt 然 后再用cat pthread txt 察看文件内容 结合程序分析结果 5 修改一些参数 再次运行调试 加深对多线程的理解 23 6 参考源代码 include include include include pthread h define BUFFER SIZE 16 Circular buffer of integers struct prodcons int buffer BUFFER SIZE the actual data pthread mutex t lock mutex ensuring exclusive access to buffer int readpos writepos positions for reading and writing pthread cond t notempty signaled when buffer is not empty pthread cond t notfull signaled when buffer is not full Initialize a buffer void init struct prodcons b pthread mutex init pthread cond init pthread cond init b readpos 0 b writepos 0 Store an integer in the buffer void put struct prodcons b int data pthread mutex lock Wait until buffer is not full while b writepos 1 BUFFER SIZE b readpos printf wait for not full n pthread cond wait Write the data and advance write pointer b buffer b writepos data b writepos if b writepos BUFFER SIZE b writepos 0 Signal that the buffer is now not empty pthread cond signal pthread mutex unlock Read and remove an integer from the buffer 24 int get struct prodcons b int data pthread mutex lock Wait until buffer is not empty while b writepos b readpos printf wait for not empty n pthread cond wait Read the data and advance read pointer data b buffer b readpos b readpos if b readpos BUFFER SIZE b readpos 0 Signal that the buffer is now not full pthread cond signal pthread mutex unlock return data define OVER 1 struct prodcons buffer void producer void data int n for n 0 n d n n put put printf producer stopped n return NULL void consumer void data int d while 1 d get if d OVER break printf d get n d printf consumer stopped n return NULL 25 int main void pthread t th a th b void retval init pthread create pthread create Wait until producer and consumer finish pthread join th a pthread join th b return 0 六 思考题 六 思考题 1 加入一个新的线程用于处理键盘的输入 并在按键为ESC 时终止所有线程 2 线程的优先级的控制 26 第三章第三章 嵌入式嵌入式 linux 内核内核 实验实验 3 1 引导装载程序 引导装载程序 BOOTLOADER 移植实验 移植实验 BLOB 一 实验目标 一 实验目标 学习将BLOB 移植到以PXA270 为主CPU 的UP TECHPXA270 S 实验仪上的开发过 程 通过这个实验 应该掌握如下技能 1 在BLOB 中添加自己命令的方法 2 LD 链接脚本语法及编写 3 ARM 的初始化及引导过程 4 Linux 内核与BOOTLOADER 之间如何配合 二 预备知识 二 预备知识 1 LINUX 下C 语言编程的基础知识 程序调试的基础知识和方法 2 LINUX 环境的基本操作 3 ARM 汇编语法及基本指令 4 Autoconf automake Configure 等工具的基本使用方法 5 ARM 芯片的体系结构 6 可以看懂PXA270 芯片硬件寄存器的英文配置手册 三 实验环境 三 实验环境 1 硬件 UP TECHPXA270 S 嵌入式开发板 PC 机Pentumn500 以上 硬盘10G 以上 2 软件 PC 机操作系统REDHAT LINUX federal 8 0 或 REDHAT LINUX 9 0 MINICOM ARM LINUX 开发环境 四 情景描述 四 情景描述 根据现有的blob BLOB也可以从网站 http www lart tudelft nl lartware blob 上下载 进行分析 并BLOB 中添加自己的命令 然后再编译生成 下载BLOB 进行调试 27 五 实验步骤 五 实验步骤 1 建立工作目录并解压缩BLOB 软件 tar jxvf blob xscale tar bz2 cd blob xscale 2 在configure in 文件中添加自己硬件相关的定义 case board name in mainstone boardname Intel Mainstone AC DEFINE MAINSTONE 1 Intel Mainstone BLOB PLATFORM OBJ mainstone o BLOB FLASH OBJS strata o DIAG PLATFORM OBJ mainstone o MEMSETUP memsetup bvd o use lcd yes 3 在acconfig h 文件中添加自己硬件相关的定义 Define for manistone undef manistone 4 在include blob arch h 中添加硬件相关的头文件 5 elif defined MAINSTONE 6 include 7 添加与硬件相关的头文件include blob arch mainstone h 8 此文件定义与CPU 及外围设备相关的寄存器定义和其他常量的定义 9 将硬件名称添加到 archs 变量中 此变量在 utils build build all 和 utils build build Makefile 文件中 archs assabet badge4 brutus creditlart h3600 idr jornada720 lart neponset nesa pleb shannon system3 mainstone 10 将自己特定硬件相关的源代码文件添加到 src blob Makefile am 文件中的 EXTRA blob rest elf32 SOURCES 宏变量中 EXTRA blob rest elf32 SOURCES chkmem c clock c debug c amd32 c intel16 c intel32 c nullflash c assabet c brutus c badge4 c clart c h3600 c idr c 28 jornada720 c lart c nesa c pleb c shannon c lcd c system3 c 上面是blob 原有的文件清单 如果需要裁减或增加 可以修改这里 11 以 src blob assabet c 为模板 建立自己的 FLASH 和串口初始化文件 include include include 说明FLASH 的块分布 flash descriptor for Assabet flash 2x Intel 28F128J3A strataflash 16MB static flash descriptor t assabet flash descriptors size 2 128 1024 num 64 lockable 1 NULL block 初始化FLASH 的驱动函数和块结构指针 static void init assabet flash driver void flash descriptors assabet flash descriptors flash driver 加入初始化列表中 initlist init assabet flash driver INIT LEVEL DRIVER SELECTION 初始化串口 static void assabet init hardware void u32 bcr u32 0 x12000000 enable RS232 tranceiver and green LED bcr RS232 ENABLE GREEN LED ENABLE select serial driver serial driver initlist assabet init hardware INIT LEVEL DRIVER SELECTION 12 建立内存初始化配置控制文件 29 新建一个文件命名为memsetup bvd S 该文件的主要内容是通过CPU 的寄存器将数据分 别写入内存控制寄存器中 pxa270 芯片的SDRAM 有四块区域 其内存分配图如下 它的内存地址映像范围从0 xA0000000 到0 xB0000000 共256M 的空间中 它的控制寄 存器地址范围从0 x48000000 到0 x48000044 在UP TECHPXA270 S 实验仪器上 核心板 的SDRAM 接在了SDRAM BANK0 上 使用了一片64M 的SDRAM 同时在nCS0 连接了 一片16M NOR FLASH 在nCS1 连接了一片64M NAND FLASH 13 将体系结构编号添加到include blob linux h if defined ASSABET define ARCH NUMBER 25 elif defined BADGE4 elif defined MAINSTONE define ARCH NUMBER 406 else warning FIXME Calling the kernel with a generic SA1100 architecture code YMMV define ARCH NUMBER 18 endif 14 修改运行configure 配置板子 configure 脚本的主要作用体现在可以提供对环境的配置和检查 还可以针对特定硬件 编写特定的配置参数 在多平台系统中或者象BLOB 这样的支持多个硬件开发板的软件中 30 是非常有意义的 由于BLOB 是按照LINUX 的通常规则编写 使用了autoconf automake autohead 等 软件 其安装配置方法是 运行configure 加配置参数 运行make configure 脚本由autoconf 根据configure am 源代码产生 因此用户需要修改 configure am 文件 再运行autoconf 不要直接修改configure 15 修改 src blob Makefile am src blob Makefile am 文件是最主要的Makefile 它直接控制产生的最终BLOB 文件 在这个文件中定义了第一阶段和第2 阶段的目标代码产生的过程及其依赖关系 以及最终 blob 文件的组装过程 我们可以将自己的特定代码加入其中 以达到自己需要的功能 src blob Makefile am 文件的内容较多 大家可以直接查看源代码 Makefile 的语法规则 可以参考其他相关的书籍 16 编写自己的 FLASH 驱动程序 以src blob sst16 c 程序为模板 针对自己的开发板上的FLASH 完成相应的驱动函数 flash driver structure flash driver t sst16 flash driver erase flash erase sst16 write flash write sst16 lock block flash lock block sst16 unlock block flash unlock block sst16 query block lock flash query block lock sst16 可以将src blob sst16 c 复制为amd32 c 之后修改添加自己的代码 并将amd16 c 加入 src blob Makefile am 中 17 编译及下载调试 运行make 产生blob 文件 blob 放在src blob 目录下 通过JTAG 仿真器下载到 FLASH 中 具体操作如下 首先 把并口线插到PC 机的并口 把并口另一端与并口JTAG 转换线相连 再与开发板 的14 针JTAG 口相连 然后 把附带光盘中目录 tools JFlash MM 下的整个GIVEIO 文 件夹拷贝到C WINDOWS 下 并把该目录下的giveio sys 文件拷贝到 C WINDOWS system32 drivers 下 接着 在控制面板里 选添加硬件 下一步 选 是我 已经连接了此硬件 下一步 选中 添加新的硬件设备 下一步 选中安装我手动从列表选择 的硬件 下一步 选择 显示所有设备 选择 从磁盘安装 浏览 指定驱动为 C WINDOWS GIVEIO giveio inf 文件 点击确定 安装好驱动 接着 把JFlash MM 整 个目录copy 到D 盘下 并把附带光盘中目录 img 下的blob映象文件拷贝到该目
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输血安全知识培训试题及答案
- 2025年事业单位工勤技能-湖北-湖北计算机操作员五级(初级工)历年参考题库典型考点含答案解析
- 2025-2030中国综合桥梁系统行业市场发展趋势与前景展望战略研究报告
- 文化产业园产业集聚与服务创新:2025年产业融合发展模式与挑战深度分析报告001
- 2025年天然气加气站布局与社区安全防范体系的整合分析报告
- 编程教育未来趋势2025年在线平台盈利模式分析报告
- 2025年尾矿综合利用与生态修复技术创新成果分析报告
- 2025年事业单位工勤技能-河南-河南机械冷加工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南地质勘查员一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南信号工-机车信号设备维修五级(初级工)历年参考题库典型考点含答案解析
- 医院护理管理课件
- 2025年高考语文全国一卷试题真题及答案详解(精校打印)
- 附录E-IATF16949条款过程对照表
- GB∕T 3185-2016 氧化锌(间接法)
- 三级安全教育考试试题及(全)
- DB37∕T 5023-2014 非透明幕墙建筑外保温系统应用技术规程
- 电网调度自动化维护员岗位培训题库简答题
- 中国古代文学史《第二章:诗经》PPT课件(完整版)
- 云南省地质灾害群测群防手册
- 高级催乳师培训课程讲义
- 第三届韬奋杯全国出版社青编校大赛校对试题(已编辑)
评论
0/150
提交评论