03 OrangePi 内核编译
来源:互联网 发布:加群软件 编辑:程序博客网 时间:2024/05/14 20:54
配置交叉编译器: 解包gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2 解包后,得到的目录名比较长,改下目录名为“arm-gcc" vim ~/.bash_profile 增加语句 export PATH=/disk3/myown/arm-gcc/bin:$PATH 保存退出后, 注消系统后环境变量生效 重登系统后,在终端输入arm按两下tab键: 会出现好多个: arm-linux-gnueabihf-* 内核编译: 在orangepi_sdk目录下: 进入source/linux-3.4.112内核源码目录. 注意: uboot, linux内核都是可以支持多种CPU架构, 一个CPU架构下又有多种SOC, 一个SOC又可以做成多种方案.所以我们编译前都需要指定编译哪种架构,哪种SOC, 哪种方案 linux内核里的配置项非常多,厂家一般都会提供一些默认的配置。配置文件在CPU架构目录下的configs目录. 我们可用的配置在arm/configs: sun8iw7p1smp_android_defconfig sun8iw7p1smp_linux_defconfig sun8iw7p1smp_android_karaok_defconfig sun8iw7p1smp_min_defconfig sun8iw7p1smp_android_secure_defconfig sun8iw7p1smp_secure_defconfig sun8iw7p1smp_defconfig 1). 使用厂商提供的默认配置: 可以把xxx_defconfig 复制成源码根目录下的.config 也可以: make xxx_defconfig make sun8iw7p1smp_android_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- //注意,以后只要在linux里打"make"都需指定ARCH, CROSS_COMPILE 2). 配置内核: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 出现界面后(按空格键选上或取消选中项): [*] Enable loadable module support ---> [*] Forced module unloading [ ] Module versioning support [ ] Source checksum for all modules Device Drivers ---> <*> Multimedia support ---> [*] Video capture adapters ---> [*] V4L USB devices ---> <*> USB Video Class (UVC) General setup ---> [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support CPU Power Management ---> CPU Frequency scaling ---> [ ] CPU Frequency scaling 3). 编译内核 make -j4 uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 编译时出现错误: drivers/base/firmware_class.c: In function ‘firmware_data_read’: drivers/base/firmware_class.c:631:9: error: implicit declaration of function ‘kobj_to_dev’ [-Werror=implicit-function-declaration] 原因是那源文件里没有包含 "kobj_to_dev"的头文件. 在drivers/base/firmware_class.c里写上包含头文件<linux/genhd.h> 修改好后,接着编译即可. 编译完成后, 在arch/arm/boot/uImage就是编译出来的内核镜像 4). 把板上SD卡接上pc, 把编译出来的内核镜像放到卡的第一个分区(即fat分区),也可以放到第二个分区(需注意命令) 5). 把SD卡重放到板上后,即可读出来到内存来启动 fatload mmc 0:1 0x43000000 /script.bin //内核用的配置文件 fatload mmc 0:1 0x42000000 /uimage //内核镜像 bootm 0x42000000 //启动内核 如果出现以下错误: Error: unrecognized/unsupported machine ID (r1 = 0x00000000). Available machine support: ID (hex) NAME 00001029 sun8i Please check your kernel config and/or bootloader. 修正方法: 设置uboot的环境变量"setenv machid 0x1029"保存再重新启动内核即可 //启动后,只要有一堆的东西输出即是正常的了 6). 如果想要开发板开机后自动引导内核, 可以修改bootcmd环境变量来完成 setenv bootcmd "fatload mmc 0:1 0x43000000 /script.bin; fatload mmc 0:1 0x42000000 /uimage; bootm 0x42000000" saveenv //保存环境变量
阅读全文
0 0
- 03 OrangePi 内核编译
- 01 OrangePi uboot编译
- 01 OrangePi uboot编译
- OrangePi-One Android 源码编译
- 14 orangepi 内核里控制IO口
- 54 OrangePi linux内核里的i2c控制器驱动
- 61 OrangePi Linux内核里的spi控制器驱动
- 编译内核
- 编译内核
- 编译内核
- 编译内核
- 编译内核
- 编译内核
- 内核编译
- 编译内核
- 内核编译
- 编译内核
- 编译内核
- 算法导论程序15-计数排序(Python)
- 32.七-fixtures
- 由NEFU 519引发的思考(关于逆元)
- java分布式服务框架Dubbo的介绍与使用
- 视频算法符号,视频算术符号,视频标准缩写,各种视频知识
- 03 OrangePi 内核编译
- 汇编语言: 从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,
- Mac中Android Studio的SVN使用详解
- java代码规范
- 农村女孩高中才接触电脑,却成为程序媛的心路历程
- CAN 帧ID 与J1939 PGN 转换例子
- Spring基础学习教程(Spring之核心容器bean)-06
- 关于绝对路径和相对路径
- 关于mysql分区表主键的选择