MIPS 平台 Android 移植过程记录2_kernel升级 (2.6.29.4 -> 3.0.72)

本文记录了在MIPS架构上将Android内核从2.6.29.4升级到3.0.72的过程,遇到的未处理的内核对齐访问错误导致系统启动时死机的问题。通过分析内核日志,发现死机发生在populate_rootfs阶段。建议对比3.0内核的android-recommended.cfg配置文件,检查可能遗漏的重要配置。
摘要由CSDN通过智能技术生成
这部分记录的是kernel的升级, 之前在FPGA上跑了2.6.29的kernel去验证一些IP的功能.
而从google的网站上得到的android的source code是不包含kernel的部分的,kernel需要单独下载.
从google下载后发现是3.0.72的版本.
所以这边记录的就是kernel从2.6.29.4上升级到3.0.72上的过程.


最开始的想法就是, 先找一个3.0上的mips架构下的config档, 然后对比2.6.29上的config档的差异, 将差异弥补即可.

找了下configs的文件, 选了bcm63xx的defconfig.
下面是具体的步骤. 总体过程还算比较顺利, 3天左右搞定.

1.config文件的配置
  a.arch/mips/company 的目录copy到3.0上,kconfig/makefile的修改也copy过去
  b.在3.0上make bcm63xx_defconfig,然后make menuconfig,会出错.
  提示很多错误
...
scripts/kconfig/lxdialog/menubox.o: In function `do_scroll':
menubox.c:(.text+0x55): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_arrows':
menubox.c:(.text+0x1a4): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `do_print_item':
menubox.c:(.text+0x3a9): undefined reference to `wrefresh'
scripts/kconfig/lxdialog/menubox.o: In function `print_buttons':
menubox.c:(.text+0x4b1): undefined reference to `wrefresh'
collect2: ld returned 1 exit status
make[1]: *** [scripts/kconfig/mconf] Error 1
make: *** [menuconfig] Error 2

解决办法见http://blog.csdn.net/bdc995/article/details/8235429
sudo apt-get install libncurses5  libncurses5-dev
解决后,由于bcm63xx是big endian的,删掉-EL的编译选项后,能编译通过.

  c.对比2.6.29的.config文件和3.0默认的bcm63xx的.config文件.
    其中2.6中的CONFIG_DMA_NEED_PCI_MAP_STATE,对应3.0中的CONFIG_NEED_DMA_MAP_STATE
  d.公司芯片是little endian, bcm63xx是big endian.
    CONFIG_GENERIC_FIND_NEXT_BIT在2.6.29上是开的,但是3.0上接口不一样,关闭.
  e.2.6.29上CONFIG_SWAP_IO_SPACE没有打开,而bcm上打开了,所以关闭
  f.CONFIG_GENERIC_GPIO在2.6.29上是没打开的,所以3.0上也关闭
  g.CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ在2.6.29上打开,但是3.0上接口变了,维持关闭.
  h.CONFIG_GENERIC_TIME同上
  i.cpu选2.6.29的MIPS32R2
  j.
CONFIG_CPU_HAS_LLSC=y
CONFIG_CPU_MIPSR2_IRQ_VI=y 这2个保持2.6.29的
#CONFIG_SELECT_MEMORY_MODEL=y
#CONFIG_FLATMEM_MANUAL=y 这2个2.6.29上没有,关闭
CONFIG_UNEVICTABLE_LRU在2.6.29上是开的,但是3.0的相关代码不需要用预编译,3.0上不需要.
CONFIG_HIGH_RES_TIMERS在2.6.29上打开的,3.0也打开
CONFIG_HZ 维持2.6.29的1000
CONFIG_PREEMPT_VOLUNTARY维持2.6.29默认的
CONFIG_HAVE_IRQ_WORK在3.0上也没用到,关闭
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y这2个在3.0上也打开,维持2.6.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: docker-ce_18.06.3.ce-1_mips64el.deb是适用于mips64el架构的Docker Community Edition(CE)的安装包。Docker CE是一个开源的容器化平台,它可以让开发人员通过把应用程序和其所需的运行时环境打包到容器中来轻松地构建、发布和运行应用程序。 这个安装包是docker-ce的一个特定版本,版本号为18.06.3.ce-1。这意味着它是Docker CE的18.06.3版本的一个修订版,其中的“ce”表示这是一个社区版(Community Edition)。 mips64el是一个处理器架构,特别适用于嵌入式系统和网络设备。因此,这个安装包是专门为mips64el架构的系统设计的,以便在此类设备上安装和运行Docker CE。 要安装这个deb安装包,可以使用dpkg命令。首先,将.deb文件下载到系统中,然后在终端中导航到该文件所在的目录,并运行以下命令: ```bash sudo dpkg -i docker-ce_18.06.3.ce-1_mips64el.deb ``` 此命令将安装docker-ce版本18.06.3.ce-1,并在系统上启用Docker CE。 总之,docker-ce_18.06.3.ce-1_mips64el.deb是一个特定于mips64el架构的Docker CE安装包,可以用于在mips64el系统上安装和运行Docker容器。 ### 回答2: docker-ce_18.06.3.ce-1_mips64el.deb是一个Docker容器引擎的软件包。Docker是一个开源的容器化平台,通过将应用程序和其依赖项打包成一个独立的容器,可以实现快速、可靠和可移植的应用程序交付。 这个软件包中的CE代表Community Edition,即社区版,是免费的版本,通常适用于个人用户和小型企业。18.06.3.ce-1是软件的版本号,表示这是Docker的第18.06.3.ce-1版。mips64el是MIPS 64位架构的指令集,.deb则是Debian软件包的扩展名,适用于Debian及基于Debian的Linux发行版。 安装这个软件包可以让用户在MIPS 64位架构的计算机上使用Docker容器引擎。在安装之后,用户可以使用Docker命令行工具创建、分享和运行容器。Docker的容器化技术可以提供更高效的资源利用率和更好的开发环境一致性,同时提供了快速部署和水平扩展的优势。 使用Docker可以加快软件开发和部署的速度,减少不同环境之间的兼容性问题,并提供了更好的应用程序隔离性和安全性。因此,对于需要部署和管理容器化应用程序的用户来说,安装docker-ce_18.06.3.ce-1_mips64el.deb软件包是非常有益的。 ### 回答3: docker-ce_18.06.3.ce-1_mips64el.deb是Docker社区版本18.06.3的一个deb软件包,适用于MIPS64架构的Little Endian(mips64el)。Docker是一种开源的容器化平台,可以帮助用户快速构建、测试和部署应用程序。它通过将应用程序和其依赖项封装在一个独立的容器中,提供了一种轻量级、可移植和可扩展的解决方案。 这个软件包可以帮助用户在MIPS64架构的系统上安装和运行Docker环境。用户可以使用Docker命令在该系统上创建和管理容器。容器可以在不同的环境中移植,因为它们封装了应用程序的全部依赖项,包括操作系统和库文件。 使用Docker可以带来很多好处。首先,它使开发人员可以快速创建和销毁应用程序的实例,节省了开发和测试的时间。其次,容器化使得应用程序更加轻量级,能够更快地启动和停止。此外,容器还能够保持应用程序的环境整洁,避免了依赖冲突和版本问题。 对于需要在MIPS64架构的系统上运行Docker的用户来说,docker-ce_18.06.3.ce-1_mips64el.deb是一个必备的软件包。通过安装该软件包,用户可以享受到Docker提供的高效、便捷和可移植的容器化解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值