等离子炬
解包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⼜可以做成多种⽅案.所以我们编译前都需要指定编译哪种架构,
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: 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:10x43000000 /script.bin //内核⽤的配置⽂件
fatload mmc 0:10x42000000 /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.
force10修正⽅法:设置uboot的环境变量"setenv machid 0x1029"保存再重新启动内核即可
//启动后,只要有⼀堆的东西输出即是正常的了
6). 如果想要开发板开机后⾃动引导内核, 可以修改bootcmd环境变量来完成
setenv bootcmd "fatload mmc 0:1 0x43000000 /script.bin; fatload mmc 0:1 0x42000000 /uimage; bootm 0x42000000"
saveenv //保存环境变量