




已阅读5页,还剩90页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式嵌入式 LinuxLinux 系统设计与开发系统设计与开发 实验指导书实验指导书 计算机学院 2010 年 4 月 嵌入式嵌入式 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 综 合 性 选 做 第五章 嵌入式 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 实验实例实例教程 机械工业出版社 目录目录 第一章第一章 嵌入式嵌入式 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 第一章第一章 嵌入式嵌入式 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 库 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 1UP-TECHPXA270UP-TECHPXA270 外围端口说明外围端口说明 电源:电源输入插座,直流电9V-12V 输入。 串口1,对应了PXA270 处理器的Bluetooth 功能的串口,三线串口标准。 串口0,对应了PXA270 处理器的全功能串口,九线串口标准。 VGA 接口,可以直接和显示器,投影仪等连接。DB19 阴性插座标准。 USB 主控(host)端口4 个,包括过流保护和ESD 保护,支持热插拔。 主板上FPGA,使用Altera 公司的cyclone 系列EP1C3T144。 USB 设备(device)端口 8、10100M 自适应以太网接口 主板上FPGA 的编程接口 pxa270 的JTAG 接口,包括14Pin 和20Pin 两种标准 LCD 背光逆变器模块,注意高压! 12、168Pin 扩展总线插座 13、6x6 键盘扫描接口 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 x00 x1000000 16 位 0 Nand Flash 系统的海量存储 1 0 x040000000 x0400000816 位 0 FPGA 管理系统中断等外设 2 0 x080000000 x0800040032 位注1 IDE 系统IDE 和CF 接口 2 0 x088000000 x0880004032 位 1 PCMCIA 16 位PCMCIA 接口 (3) 0 x200000000 x30000000 16 位 2 网卡 SMC91c111,10/100M 网卡芯片 4 0 x100000000 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 cFPGAFPGA 通过PAX270-SPAX270-S 处理器的GPIO0GPIO0 扩展中断 2. 嵌入式嵌入式 Linux 开发流程开发流程 在一个嵌入式系统中使用 linux 开发,根据应用需求的不同有不同的配置开发方法,但是 一般都要经过如下的过程: 建立开发环境,操作系统一般使用 REDHATLINUX,版本 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 型) 512K32M,有的系统使用非线性 FLASH(NAND 型)8512M,有的两个同时使 用,需要根据应用规划 FLASH 的分区方案。 开发应用程序,可以放入根文件系统中,也可以放入 YAFFS、JFFS2 文件系统中,有 的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于 UCOS- II 的方式。 烧写内核、根文件系统、应用程序。 发布产品。 实验实验 1.1:建立嵌入式:建立嵌入式 linux 系统开发环境系统开发环境 一、实验目标:一、实验目标: 1熟悉 linux 操作系统的使用。 2掌握嵌入式系统开发环境的建立。 二、预备知识:二、预备知识: 掌握 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 为21。如果是在有多台计算机使用的局 域网环境使用此开发设备,IP 地址可以根据具体情况设置。如图1.4-1 所示: 图1.4-1 网络配置 双击设备eth0 的蓝色区域,进入以太网设置界面,如图1.4-2,1.4-3 所示: 图1.4-2 以太网常规设置界面 图1.4-3 以太网路由设置界面 对于REDHAT9.0,它默认的是打开了防火墙,因此对于外来的IP 访问它全部拒绝,这样其 它网络设备根本无法访问它,即无法用NFS mount 它,许多网络功能都将无法使用。因此网络 安装完毕后,应立即关闭防火墙。操作如下:点击红帽子开始菜单,选择安全级别设置,选中 无防火墙。如图1.4-4 所示: 图1.4-4 安全级别设置 在系统设置菜单中选择服务器设置菜单,再选中服务菜单,将iptables 服务的勾去掉,并 确保nfs 选项选中。 2.2. 配置配置NFSNFS: 点击主菜单运行系统设置-服务器设置-NFS 服务器(英文为:SETUP-SYSTEM SERVICE- NFS),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机 (Hosts):中填入允许进行连接的主机IP 地址。并选择允许客户对共享目录的操作为只读 (Readonly)或读写(Read/write)。如图1.4-5 所示: 图1.4-5 NFS 基本设置 下图1.4-6 是一些常规选项设置,可以作如下设置。 图1.4-6NFS 常规设置 下图1.4-7 是对客户端存取服务器的一些其他设置,按下图设置。 图1.4-7 NFS 用户访问设置 当将远程根用户当作本地根用户时, 对于操作比较方便,但是安全性较差。最后点确定退出时 则完成NFS 配置。配置好后,界面应显示如下图1.4-8 所示: 图1.4-8 配置好的NFS 我们也可以手工编写/etc/exports 文件,其格式如下:共享目录 可以连接的主机(读写 权限,其他参数)例如:/up-techpxa270 192.168.0.*(rw,sync)表示将本机的/up- techpxa270 目录共享给ip 地址为54 的所有计算机,可以读取和 写入。修改好后保存,可以用以下命令开启nfs 服务:/etc/rc.d/init.d/nfs restart 配置完成后,可用如下办法简单测试一下NFS 是否配置好了:在宿主机上自己mount 自己,看 是否成功就可以判断NFS 是否配好了。例如在宿主机/目录下执行:mount 21:/ up-techpxa270 /mnt/nfs其中21 应修改为您自己主机的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 启动后,先按CtrlA 键,再按Z 键(注意不是连续按,Ctrl+A 松开后才按Z), 进入 主配置界面(见图1.4-13)。按”O”进入配置界面(见图1-17),按上下键选择Serial port setup, 进入端口设置界面,这里有几个重要选项改为如下值(见图1.4-14): (在Change which setting 后按哪个字母就进入哪项的配置,如按A 进行端口号配置。) ASerial Device :/dev/ttyS0 (端口号使用串口1) EBPS/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 02 为您自己想要的IP 地址。这里按照缺省的IP 设置值:02。 3.重启开发板,通过终端从PC 机ping 目标板的IP,确保网络连线通畅。 4.将主机中/up-techpxa270 挂载到开发板的/mnt/nfs. mount -o nolock 21:/ up-techpxa270 /mnt/nfs (其中的IP 是主机的, 依个人设置填写) Windows平台下设置调试串口 首先需要连接PC 串口,进行PC串口设置。连接串口至PC 相应接口,另一端连接在硬 件平台的Uart0 上。确认连接无误。打开超级终端软件,进入如下图1-13 所示界面: 图1-13 填入连接名,选择图标,点击“确定”,如下图1-14 所示。 图1-14 连接时选择通讯使用串口,有的PC 可能有两个串口,使用时请确认选择已连接到平台 的串口。点击“确定”。 修改波特率为115200bps,数据流控制为“无”,结果如下图1-15 所示: 图1-15 之后点击“确定”。开启PXA270-S 硬件平台电源,监视超级终端输出,等待系统启动, 表示配置完毕。如下图1-16 所示。 图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.416 2.启用vsftpd 功能:/etc/rc.d/init.d/vsftpd restart 重启机器。 使用ftp 服务:(用命令行方式) 1. 用ftp 命令登陆开发板。(开发板的IP:02) 首先启动开发板的网络服务,启动后输入:inetd 然后宿主机端输入: ftp 02 2.以root 用户登陆,无密码. 3.常用命令: cd : 切换ftp 服务器的目录; bye :结束ftp 传输模式; dir (或ls): 显示目录中的文件及子目录列表; get : 下载单一文件; mget:下载多个文件; put: 上传单一文件; mput:上传多个文件; pwd:显示当前目录; mkdir:添加子目录; rmdir:删除子目录; ! :表示执行本机命令;(例如:!mkdir:表示在本机上建目录) 六、思考题:六、思考题: 第二章第二章 嵌入式嵌入式 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 #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;ireadpos = 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 fulln); pthread_cond_wait( /* Write the data and advance write pointer */ b-bufferb-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 */ 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 emptyn); pthread_cond_wait( /* Read the data and advance read pointer */ data = b-bufferb-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 %dn, n); put( put( printf(producer stopped!n); return NULL; /*-*/ v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 9944-2025不锈钢丝绳
- 农业机械设计课件
- 农业布局概述课件讲解稿
- 洗浴老人免责协议范文8篇
- 农业安全产的知识培训课件
- 冒号和上引号的课件
- 化工仓库管理安全培训课件
- 化安全培训课件
- 中秋月饼营销解决方案(3篇)
- 内容营销方案分析模板(3篇)
- 农业现代化种植技术培训课件
- 中城汽车(山东)有限公司审计报告
- 大学博士竞赛试题及答案
- 钢结构彩钢瓦施工工艺与技术交底
- 2025版煤矿安全规程宣贯培训课件
- 梁启超家教家风课件
- 第5课 我们说方言教学设计-2025-2026学年小学地方、校本课程浙教版(2024)人·自然·社会
- (2025秋新版)青岛版科学三年级上册全册教案
- 顾客联络服务 人工与智能客户服务协同要求 编制说明
- 2025年全国通信专业技术人员职业水平考试(通信专业实务·传输与接入·无线)历年参考题库含答案详解(5套)
- 医院汽车管理办法
评论
0/150
提交评论