1 配置交叉编译器: 2 解包gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2 3 解包后,得到的目录名比较长,改下目录名为“arm-gcc" 4 5 vim /etc/bashrc 增加语句 6 7 export PATH=/disk3/myown/arm-gcc/bin:$PATH 8 9 保存退出后, 注消系统后环境变量生效 10 11 重登系统后,在终端输入arm按两下tab键: 12 会出现好多个: arm-linux-gnueabihf-* 13 14 15 16 内核编译: 17 在orangepi_sdk目录下: 18 进入source/linux-3.4.112内核源码目录. 19 make sun8iw7p1smp_android_defconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 20 21 22 2). 配置内核: 23 make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 24 25 出现界面后(按空格键选上或取消选中项): 26 [*] Enable loadable module support ---> 27 [*] Forced module unloading 28 [ ] Module versioning support 29 [ ] Source checksum for all modules 30 31 Device Drivers ---> 32 <*> Multimedia support ---> 33 [*] Video capture adapters ---> 34 [*] V4L USB devices ---> 35 <*> USB Video Class (UVC) 36 General setup ---> 37 [ ] Initial RAM filesystem and RAM disk (initramfs/initrd) support 38 39 CPU Power Management ---> 40 CPU Frequency scaling ---> 41 [ ] CPU Frequency scaling 42 43 44 3). 编译内核 45 make -j4 uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 46 编译时出现错误: 47 drivers/base/firmware_class.c: In function ‘firmware_data_read’: 48 drivers/base/firmware_class.c:631:9: error: implicit declaration of function ‘kobj_to_dev’ [-Werror=implicit-function-declaration] 49 50 原因是那源文件里没有包含 "kobj_to_dev"的头文件. 51 在drivers/base/firmware_class.c里写上包含头文件<linux/genhd.h> 52 53 修改好后,接着编译即可. 54 编译完成后, 在arch/arm/boot/uImage就是编译出来的内核镜像 55 56 4). 把板上SD卡接上pc, 把编译出来的内核镜像放到卡的第一个分区(即fat分区),也可以 放 到第二个分区(需注意命令) (直接复制过去就可以了) 57 (注:下面的 /script.bin 是在编译uboot时在 output/u-boot文件里) 58 5). 把SD卡重放到板上后,即可读出来到内存来启动 59 fatload mmc 0:1 0x43000000 /script.bin //内核用的配置文件 60 61 fatload mmc 0:1 0x42000000 /uimage //内核镜像 62 63 bootm 0x42000000 //启动内核 64 如果出现以下错误: 65 Error: unrecognized/unsupported machine ID (r1 = 0x00000000). 66 Available machine support: 67 ID (hex) NAME 68 00001029 sun8i 69 Please check your kernel config and/or bootloader. 70 修正方法: 设置uboot的环境变量"setenv machid 0x1029"保存再重新启动内核即可 71 //启动后,只要有一堆的东西输出即是正常的了 (最后会一直停在这里,因为还没有文件系统) 72 73 74 6). 如果想要开发板开机后自动引导内核, 可以修改bootcmd环境变量来完成 75 setenv bootcmd "fatload mmc 0:1 0x43000000 /script.bin; fatload mmc 0:1 0x42000000 /uimage; bootm 0x42000000" (注:在uboot下一行可能放不下,但是只管写就可以了,或者准备好命令复制过来即可) 76 77 saveenv //保存环境变量
参考博客:https://blog.csdn.net/jklinux/article/details/72675929