九鼎创展论坛

标题: 根据x4418的最新资料,编译内核成功,启动内核报错? [打印本页]

作者: duwu891229    时间: 2015-8-30 15:52
标题: 根据x4418的最新资料,编译内核成功,启动内核报错?
本帖最后由 duwu891229 于 2015-8-30 16:10 编辑

采用的交叉工具链是:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux(buildroot下载的)

编译脚本片段:
  1. toolchain_dir=/home/duwu/arm-linux/x4418/buildroot-2015.05/output/host/usr/bin
  2. PATH=$PATH:$toolchain_dir
  3. cross_compile=arm-linux-gnueabihf-

  4. kernel_config=x4418_defconfig
  5. make_kernel(){
  6.         cd ${kernel_dir} || return 1

  7.         make clean
  8.         make ${kernel_config}
  9.         make uImage ARCH=arm CROSS_COMPILE=${cross_compile}

  10.         echo "finish make kernel"
  11.         return 0
  12. }
复制代码


打包脚本片段:
  1. x4418_dir=/home/duwu/arm-linux/x4418
  2. prod_dir=$x4418_dir/camera_prod
  3. #
  4. tool_dir=$prod_dir/tool
  5. PATH=$tool_dir:$PATH
  6. output_dir=$prod_dir/output
  7. kernel_dir=$x4418_dir/kernel
  8. #
  9. cp $kernel_dir/arch/arm/boot/uImage $output_dir/boot || return 1
  10. mkuserimg.sh -s ${output_dir}/boot ${output_dir}/boot.img ext4 boot 67108864
复制代码


使用fastboot烧写内核,启动信息:
[    0.179000] PTP clock support registered
[    0.180000] ###################### x4418 board #######################
[    0.182000] web:www.9tripod.com
[    0.183000] bbs:www.bbs.9tripod.com
[    0.184000] tel:0755-33133436 0755-33121205
[    0.185000] Baoan District City,Shenzhen Industrial Road Internet inductry base 3003B District B
[    0.186000] Shen Zhen 9tripod innovation and development co.,ltd
[    0.187000] ##########################################################
[    0.193000] axp_mfd 3-0034: AXP (CHIP ID: 0x06) detected
[    0.198000] [x4418] axp22_ldo1: 3000 mV
[    0.201000] [x4418] axp22_aldo1: 700 <--> 3300 mV at 3300 mV
[    0.204000] [x4418] axp22_aldo2: 700 <--> 3300 mV at 1800 mV
[    0.207000] [x4418] axp22_aldo3: 700 <--> 3300 mV at 1000 mV
[    0.210000] [x4418] axp22_dldo1: 700 <--> 3300 mV at 3300 mV
[    0.213000] [x4418] axp22_dldo2: 700 <--> 3300 mV at 1800 mV
[    0.217000] [x4418] axp22_dldo3: 700 <--> 3300 mV at 700 mV
[    0.220000] [x4418] axp22_dldo4: 700 <--> 3300 mV at 700 mV
[    0.223000] [x4418] axp22_eldo1: 700 <--> 3300 mV at 1800 mV
[    0.226000] [x4418] axp22_eldo2: 700 <--> 3300 mV at 3300 mV
[    0.229000] [x4418] axp22_eldo3: 700 <--> 3300 mV at 700 mV
[    0.232000] [x4418] axp22_dc5ldo: 700 <--> 1400 mV at 1200 mV
[    0.235000] [x4418] axp22_dcdc1: 1600 <--> 3400 mV at 3300 mV
[    0.238000] [x4418] axp22_dcdc2: 600 <--> 1540 mV at 1100 mV
[    0.241000] [x4418] axp22_dcdc3: 600 <--> 1860 mV at 1100 mV
[    0.244000] [x4418] axp22_dcdc4: 600 <--> 1540 mV at 1500 mV
[    0.247000] [x4418] axp22_dcdc5: 1000 <--> 2550 mV at 1500 mV
[    0.250000] [x4418] axp22_ldoio0: 700 <--> 3300 mV at 3800 mV
[    0.253000] [x4418] axp22_ldoio1: 700 <--> 3300 mV at 3800 mV
[    0.255000] axp22-supplyer axp22-supplyer.19:  AXP228_BATTERY_VERSION2015.02.15:modify)
[    0.256000] axp charger not limit now
[    0.271000] now_rest_vol = 100
[    0.273000] Advanced Linux Sound Architecture Driver Version 1.0.25.
[    0.274000] Bluetooth: Core ver 2.16
[    0.275000] NET: Registered protocol family 31
[    0.276000] Bluetooth: HCI device and connection manager initialized
[    0.277000] Bluetooth: HCI socket layer initialized
[    0.278000] Bluetooth: L2CAP socket layer initialized
[    0.279000] Bluetooth: SCO socket layer initialized
[    0.281000] cfg80211: Calling CRDA to update world regulatory domain
[    0.283000] Switching to clocksource source timer
[    0.305000] Unable to handle kernel NULL pointer dereference at virtual address 00000001
[    0.313000] pgd = 80004000
[    0.316000] [00000001] *pgd=00000000
[    0.320000] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[    0.320000] Modules linked in:
[    0.320000] CPU: 0    Not tainted  (3.4.39 #3)
[    0.320000] PC is at kmem_cache_alloc_trace+0x6c/0x1f4
[    0.320000] LR is at kmem_cache_alloc_trace+0xfc/0x1f4
[    0.320000] pc : [<8011a068>]    lr : [<8011a0f8>]    psr: 20000013
[    0.320000] sp : b3843ec8  ip : 000020c4  fp : 00000001
[    0.320000] r10: b3842008  r9 : 80900cbe  r8 : b3802200
[    0.320000] r7 : 00000080  r6 : 802b545c  r5 : 000000d0  r4 : 00000001
[    0.320000] r3 : 808dd0c8  r2 : 00000000  r1 : b3842000  r0 : 00b65000
[    0.320000] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    0.320000] Control: 10c5387d  Table: 4000404a  DAC: 00000015
作者: armeasy    时间: 2015-8-31 09:11
下载最新的光盘编译,用我们配置好的,脚本什么的全做好了。
作者: duwu891229    时间: 2015-8-31 10:10
本帖最后由 duwu891229 于 2015-8-31 10:22 编辑

我下的是你们8/28/2015给的链接。

交叉工具链使用的是gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux,因为使用buildroot构建的根文件系统,用的也是这个工具链。

编译内核脚本也就这两句:
make x4418_defconfig
make uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

我单独提取你们源码包中kernel和prototype文件夹,编译不报错,说明不缺少文件。

打包内核为boot.img的脚本:
是没有问题的,因为我使用你们提供的uImage单独打包,启动内核没问题。

我使用linux,不大可能完全照搬你们的android脚本去编译内核,因为太大,许多问题一步到位,出了问题没法分割。
我只能多尝试几次。

作者: armeasy    时间: 2015-8-31 10:59
内核不在这里编译的,内核是在android源码中编译
作者: armeasy    时间: 2015-8-31 10:59
不需要你改任何东西,直接把android源码包解压,./mk -k就可以了
作者: duwu891229    时间: 2015-8-31 11:37
本帖最后由 duwu891229 于 2015-8-31 11:44 编辑

linux内核源码文件:使用你们发布的源码包中kernel和prototype文件夹。

linux内核编译脚本:交叉工具链配置可以自主选择,配置好环境,2句话就结了。
make x4418_defconfig
make uImage ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

目前按上面2条,可以成功生成uImage但内核启动报错。启动报错与是否使用你们脚本根本无关,
要么是工具链选取的问题,要么是内核中有些一些奇怪的东西。

如果按上面2条都没得到一个正常启动的的内核,那么4418的Linux开发,对于内核的任何修改,都没法保障是对的。

作者: armeasy    时间: 2015-9-1 08:49
用我们的方式是没有任何问题的
作者: armeasy    时间: 2015-9-1 08:50
linux和android的内核本身是不能兼容的,我们做了兼容性处理,会根据环境变量自动判断
作者: duwu891229    时间: 2015-9-1 09:30
本帖最后由 duwu891229 于 2015-9-1 09:43 编辑

把工具链(buildroot生成的)
#toolchain_dir=/home/duwu/arm-linux/x4418/buildroot-2015.05/output/host/usr/bin
#PATH=$PATHtoolchain_dir
#cross_compile=arm-linux-gnueabihf-

更换为(原来210使用的)
toolchain_dir=/home/duwu/arm-linux/x210/arm-linux-gcc-4.4.1/bin
PATH=$PATHtoolchain_dir
cross_compile=arm-linux-

内核可以正常启动,这个结果与你们的兼容性处理有关系吗?

你们的兼容性处理,在mk脚本中内核生成部分中是没有的。唯一能看到也就是内核代码树中android文件夹和外部的prototype文件夹。

我觉得目前的结果表明,内核启动失败与工具链选取有关,感觉和“浮点配置”有关。

你们能尝试使用gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux(linux文档中buildroot所选取的工具链),

编译内核,问题就能重现


作者: armeasy    时间: 2015-9-1 10:11
我们并没有用gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux去尝试编译内核,只是用它编译了buildroot和QT,内核仍然是用的android默认的
作者: armeasy    时间: 2015-9-1 10:11
不建议换其他工具链编译,除非你对这个相当熟悉
作者: duwu891229    时间: 2015-9-1 10:22
好吧,结贴了。
水平不够只能使用两套工具链开发。
高玩任意。




欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) Powered by Discuz! X3.2