课程安排 |
课程内容 |
第一天上午
(理论课 3学时) |
交叉编译工具介绍(Cross-Compiler)与启动代码分析(Bootloader)
1. 嵌入式Linux综述
Linux的由来及现状 / 嵌入式操作系统分类 / 嵌入式linux的典型应用及分
类实时Linux / ARMlinux / uClinux / ARM、PPC、MIPS、X86 体系结构
2. 嵌入式Linux开发基本概念
启动代码 / 内核 / 文件系统 / 根文件系统 / 驱动程序 / 设备文件
其他概念如(版本号、补丁、JTAG调试)
3. 嵌入式Linux开发工具介绍
GCC及其它交叉编译器 / Makefile项目管理工具 / SkyEye 仿真工具
其他二进制辅助工具( ld、objdump、objcopy、nm、readelf 等 )
4. 启动代码Bootloader分析各种典型的bootloader(uboot、armboot、
redboot、grub)基本命令介绍引导程序的开发注意事项(启动代码的二阶
段、内存地址分配、与操作系统交互等) 开发实例分析: u-Boot 的架构
、命令用法及其扩 |
第一天下午
(理论课 3学时) |
嵌入式Linux移植(Embedded Linux Porting)与根文件系统 (RootFileSystem)
1. Linux 与 uClinux 的目录结构
硬件相关代码目录 / 驱动程序代码目录 / 硬件相关头文件目录
uClinux uClibC 库程序目录 / user 用户应用程序目录 / romfs 根文件系
统目录
uClinux 的特点与差异 (加载方式、根文件系统、可执行文件格式
、应用程序库等)
2. 内核编译和配置
源码下载 / 补丁文件 / 配置文件修改和使用 / 相关 Makefile 重点部分
分析ARM Linux 配置选项和裁减、编译步骤 / uClinux配置选项和裁减、编
译步骤二进制文件的生成 / SkyEye 仿真调试演示 / ELF、BIN、FLAT文件
格式介绍uClinux Image File(image.ram、image.rom、
image.binromfs.img)文件含义剖析
3. 根文件系统
各种常见的根文件系统介绍(RomFS、JFFS2、NFS、EXT2、Cramfs、
YAFFS等)
根文件系统的作用和相关文件 / 最小的根系统Initrd 的制作(使用
BusyBox)NFS 网络根文件系统(NFS服务器的搭建、网络根文件系统的加载
)
4. Linux 根文件系统常用文件分析
文件系统的结构 / 相关常用文件(initrd,inittab,fstab,rc脚本编写
等) |
第二天上午
(理论课 3学时) |
嵌入式Linux应用程序开发与调试方法(Applications and Debugging)
1. 应用程序开发
移植应用程序 / 添加应用程序到uClinux中 / 移植动态库
可执行文件的加载方式(FTP传送、NFS共享、ROMFS打包、脚本批处理等)
2. 高级应用程序开发技巧
源码文件管理 / 分级目录递归编译 / 自动生成系统配置文件 / 条件编译等
开发实例分析:基于数据采集和网络传输系统的编程开发代码框架
3. 嵌入式调试技术
点灯大法 / 格式化输出 / JTAG 调试工作原理介绍 / GDB 调试桩 Stub 介绍
使用 GDB & gdbserver进行远程调试(基于串口和网络调试应用程序)
4. SkyEye 仿真调试工具
SkyEye 背景介绍 / 模拟硬件介绍 / 可以支持的操作系统与网络协议栈
SkyEye 应用实例分析:uClinux on SkyEye / uC/OS-II on SkyEye / MiniGUI on SkyEye |
第二天下午
(理论课 3学时) |
嵌入式图形和数据库开发实例
1. 嵌入式图形系统概述(Embedded GUI Programming)
常用的嵌入式图形系统 / 嵌入式图形系统的基本架构 / 不同嵌入式图形系统的
特点和各自优势
2. MiniGUI的配置和安装
MiniGUI的特点 / MiniGUI的架构 / 编译安装MiniGUI / 配置MiniGUI
3. MiniGUI的编程
MiniGUI的编程API / Helloworld编程实例 / MiniGUI的控件概述
4. SQLite的编译安装及使用
嵌入式的数据库简介 / SQLite的特点和结构 / SQLite的编译和安装 / SQLite的
编程 |
第三天上午
(实验课 3学时) |
实验一:嵌入式linux开发环境建立
实验目的:掌握交叉编译环境的建立;掌握内核的交叉编译;掌握redboot的操作
实验要求:要求独立完成内核编译,上载,运行,直到hello world程序在目标板上
运行成功。
实验内容:在S3C2410开发板上运行linux。 |
第三天下午
(实验课 3学时) |
实验二:根文件系统的建立
实验目的:掌握根文件系统的建立。掌握静态编译,动态编译应用程序
实验要求:要求独立完成根文件系统的建立,编写一个hello world程序运行在
S3C2410上,比较动态编译与静态编译的不同。
实验内容:在S3C2410上运行hello world程序。 |
第四天上午
(实验课 3学时) |
实验三:基于S3C2410的MiniGUI实验
实验目的:掌握minigui应用程序的编译和运行,理解minigui在开发板上的移植
实验要求:要求独立编译minigui库、资源和应用程序,并通过根文件系统的方式在
目标板上成功运行hello world程序或其他实例程序。
实验内容:在S3C2410开发板上运行minigui应用程序。 |
第四天下午
(实验课 3学时) |
实验四:基于S3C2410的sqlite实验
实验目的:掌握sqlite应用程序的编译和运行,在开发板上的运行。
实验要求:要求交叉编译sqlite,并通过测试程序静态连接sqlite库,并通过根文件
系统的方式在目标板上成功运行hello world程序。
实验内容:在ARM9 S3C2410开发板上运行sqlite应用程序 |