03 OrangePi 内核编译


配置交叉编译器:
    解包gcc-linaro-arm-linux-gnueabihf-4.7-2013.03-20130313_linux.tar.bz2
    解包后,得到的目录名比较长,改下目录名为“arm-gcc"

    vim  /etc/bashrc 增加语句

    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 //保存环境变量

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值