• 内核编译


     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

  • 相关阅读:
    【BUG修复】视频综合管理平台EasyNVS首页设备接入情况显示与实际不符如何调整?
    数据库连接池
    手写SORM(simple object relation mapping)框架3—DBManager和TableContext的设计
    jdbc—总结
    jdbc—CLOB和BLOB
    jdbc—时间处理
    jdbc—事务
    递归(最大公约数)
    C++ return
    函数参数
  • 原文地址:https://www.cnblogs.com/edan/p/9117614.html
Copyright © 2020-2023  润新知