本文主要是介绍5.1.2.Linux 设备驱动程序开发环境搭建 —— 基于Tiny4412,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、安装交叉编译工具
交叉编译工具的版本:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
1. 切换到 root 用户:su
2. 解压
$ tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /
交叉编译工具默认路径(pwd):/opt/FriendlyARM/toolschain/4.5.1/bin
3. 将交叉编译器添加到环境变量中
(1). 临时:在终端执行如下命令
$ export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
(2). 永久:添加到开机启动文件中
$ vim /etc/profile
# 写到 profile 文件的最后一行,保存退出
$ export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
4. (可选)如果是 Ubuntu 64 位系统,则需要安装支持32位的库
$ apt-get install lib32ncurses5 lib32z1
5. 验证是否成功
$ arm-linux-gcc -v
二、U-Boot 编译
1. U-Boot 的版本:uboot_tiny4412-sdk1506.tar.bz2
2. 解压
$ tar -jxvf uboot_tiny4412-sdk1506.tar.bz2
3. 切换到解压后的目录
$ cd uboot_tiny4412-sdk1506
4. 编译 U-Boot
# 清除临时目标文件
$ make clean
# 选型, 选择开发板对应的配置文件
$ make Tiny4412_config
# 编译
$ make
5. 编译 BL2 制作工具
$ cd sd_fuse/$ make
6. 烧写到 SD 卡
(1). SD 卡分区(SD-Flasher.exe
)
(2). 将 U-Boot 镜像烧写到SD卡
$ cd tiny4412/
# 主机识别到 SD 卡后,VMware 中”虚拟机“ ”可移动设备“,找到 SD 卡,点击断开与主机链接
$ ls /dev/ (mmcblk0)$ ./sd_fusing.sh /dev/mmcblk0
三、编译内核
1. 内核版本:linux-3.5-20141114.tar
2. 解压内核
$ tar -xvf linux-3.5-20141114.tar
3. 在顶层目录修改makefile,指定交叉编译工具
$ cd linux-3.5$ vim Makefile# 修改 197 行
$ CROSS_COMPILE ?= arm-linux-
4. 修改 kernel/timeconst.pl 文件
$ vim kernel/timeconst.pl
5. 安装编译内核所需的库
$ apt-get update
$ apt-get upgrade$ apt-cache search ncurses$ apt-get install libncurses5-dev
6. 运行 make menuconfig ,产生 .config 文件
$ make menuconfig
7. 复制 Tiny4412 的原厂配置文件到 .config 文件中
$ cp tiny4412_linux_defconfig .config
8. 去掉内核保护机制
$ make menuconfig
# System Type --->
# [] Support TrustZone-enabled Trusted... 去掉(*)这一项,内核保护机制
9. 编译内核
$ export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin$ make zImage
10. 烧写内核镜像到 SD 卡
$ cd arch/arm/boot$ dd iflag=dsync oflag=dsync if=./zImage of=/dev/mmcblk0 seek=1057
11. 开发板上电,接入串口,验证结果
这篇关于5.1.2.Linux 设备驱动程序开发环境搭建 —— 基于Tiny4412的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!