内核编译

 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

posted @ 2018-05-31 16:55  edan  阅读(277)  评论(0编辑  收藏  举报