linux内核移植

内核移植

半导体厂商会从 Linux内核官网下载某个版本,将其移植到自己的 CPU上,测试成功后就会将其开放给该半导体厂商的 CPU开发者。开发者下载其提供的 Linux内核,然后将其移植到自己的产品上。

1. NXP官方开发板Linux内核编译测试
编译内核之前需要先在ubuntu上安装lzop库,另外,图形化配置工具还需要ncurses库支持,安装命令为:

sudo apt-get install lzop
sudo apt-get install build-essential 
sudo apt-get install libncurses5-dev

在Ubuntu中新建一个文件夹,然后将linux内核压缩包拷贝到文件夹中并解压,解压命令为:

tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

NXP 官方原版 Linux 源码已经放到了开发板光盘中,路径为:1、例程源码->4、NXP 官方原版Uboot和Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2,可 以 使 用 “ mv ” 命 令 对 其 重 命 名 , 我这 里 将 其 重 命 名 为 “ linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek”,命令如下:

mv linux-imx-rel_imx_4.1.15_2.1.0_ga linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek

1.1 配置并编译Linux内核
编译Linux内核之前要先配置Linux内核。每个板子都有其对应的默认配置文件,这些配置文件保存在“arch/arm/configs”目录中。imx_v7_defconfig和imx_v7_mfg_defconfig都可以作为NXP官方开发板IMX6ULL EVK的默认配置文件,但是一般都使用后者,因为后者编译出来的zImage可以通过NXP官方提供的MfgTool工具进行烧写

进入到Ubuntu中的Linux源码根目录下,执行如下命令:
 

#编译之前先清理
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 	
#配置Linux内核
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
#编译Linux内核
make -j4

编译完成后,我们会得到两个重要文件:

  • Linux内核镜像文件:存放路径为 arch/arm/boot/zImage
  • IMX6ULL EVK开发板对应的设备树文件:存放路径为 arch/arm/boot/dts/imx6ull-14x14-evk.dtb

1.2 Linux内核启动测试

将生成的zImage和imx6ull-14x14-evk.dtb这两个文件下载到IMX6ULL-ALPHA开发板上进行测试。

首先检查uboot中的环境变量bootargs

console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw

将上一小节编译出来的 zImage 和 imx6ull-14x14-evk.dtb 复制到 Ubuntu 中的 tftp 目录下,因为我们要在 uboot 中使用 tftp 命令将其下载到开发板中,

cp arch/arm/boot/zImage ../../../tftpboot/ 
cp arch/arm/boot/dts/imx6ull-14x14-evk.dtb ../../../tftpboot/

拷贝完成以后就可以测试了,启动开发板,进入 uboot 命令行模式,然后输入如下命令将zImage 和 imx6ull-14x14-evk.dtb 下载到开发板中并启动:

tftp 80800000 zImage
tftp 83000000 imx6ull-14x14-evk.dtb
bootz 80800000 - 83000000

启动运行

bootz 80800000 - 83000000

1.3根文件系统缺失错误
Linux 内核启动以后是需要根文件系统的,根文件系统存在哪里是由 uboot 的 bootargs 环境变 量 指 定 , bootargs 会 传 递 给 Linux 内 核 作 为 命 令 行 参 数 。
root=/dev/mmcblk1p2,也就是说根文件系统存储在/dev/mmcblk1p2 中,也就是 EMMC 的分区 2中。这是因为正点原子的 EMMC 版本开发板出厂的时候已经 EMMC 的分区 2 中烧写好了根文件系统,所以设置 root=/dev/mmcblk1p2。

如果我们没有根文件系统,启动之后会报错

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

就是提示内核崩溃,因为 VFS(虚拟文件系统)不能挂载根文件系统,因为根文件系统目录不存在。

### 推荐的API接口文档管理工具 在现代软件开发中,高效的API接口文档管理工具可以显著提升团队协作效率并减少重复劳动。以下是几种广泛使用的API接口文档管理工具: #### 1. **ApiPost** ApiPost 是一款功能强大的 API 文档生成与调试工具[^1]。它支持多种协议(如 HTTP/HTTPS 和 WebSocket),允许开发者通过直观的界面设计和测试 API 请求。此外,ApiPost 还提供了实时同步的功能,使得多人协作更加便捷。 #### 2. **Swagger (OpenAPI)** Swagger 是目前最流行的开源框架之一,用于设计、构建以及记录 RESTful APIs。其核心组件 Swagger UI 提供了一个交互式的网页界面,方便用户查看和尝试不同的 API 调用[^2]。 ```yaml openapi: 3.0.0 info: title: Sample API version: 1.0.0 paths: /users/{id}: get: summary: Get user by ID parameters: - name: id in: path required: true schema: type: integer responses: '200': description: A single user item ``` #### 3. **Postman** 作为全球领先的 API 开发环境,Postman 不仅提供 API 测试能力,还内置了详细的文档生成功能。它可以自动为每一个请求生成对应的说明文档,并支持分享给其他成员或外部客户[^3]。 #### 4. **Rapidoc** 如果希望快速嵌入静态 HTML 页面中的动态 API 文档,则 Rapidoc 可能是一个不错的选择。基于 OpenAPI Specification 的标准实现,只需几行简单的 JavaScript 就能让任何网站展示完整的 API 描述信息[^4]。 ```html <script src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script> <rapi-doc spec-url="/path/to/spec.json"></rapi-doc> ``` #### 5. **Apifox** 类似于 ApiPost,Apifox 结合了 API 设计、Mock 数据模拟及自动化测试等功能于一体。特别适合中小型项目或者初创企业使用,因为它既简单易上手又具备足够的扩展性来满足复杂需求场景下的应用[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值