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 //保存环境变量
原创粉丝点击