0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【北京迅为】i.mx8mm嵌入式linux开发指南第四篇 嵌入式Linux系统移植篇第六十九章uboot移植

北京迅为电子 2024-10-22 14:46 次阅读

迅为i.mx8mm开发板特点:

性能强:i.MX8MM处理器采用了先进的14LPC FinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。

PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个降压稳压器、五个线性稳压器和一个负载开关,为整个系统的稳定运行提供了更可靠的保证。

接口丰富:千兆工业以太网、MIPI-DSIUSB HOST、WIFI/BT、4G模块CANRS485等接口一应俱全。

编解码:H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码, 并提供相关历程。

支持音频:8路PDM接口、5路SAI接口、2路Speaker。

系统支持:Android9.0、Linux4.14.78 + Qt5.10.1、Yocto、Ubuntu20、Debian9系统。

全新升级《开发板使用手册》

率先提供在Android9系统上移植4G模块方法,并带大家一步步调试;

率先提供如何通过SD卡启动Linux镜像,例如yocto debian ubuntu等文件系统; 教大家如何将驱动编译进内核源码; 根据IMX8MM开发板的原理图总结了引脚信息,方便大家查阅~

售后服务:提供在线技术支持答疑,并协助用户检查原理图,提供详细的硬件设计指导文档等服务。

迅为品质:通过电磁兼容、电磁辐射标准检测、安规检测、高低温环境检测等,确保产品的可靠性。

7*24小时长期稳定运行。10年以上供货周期长,批量无优。

行业应用:适用于智能充电桩物联网工业控制、医疗、智能交通等,可用于任何通用工业和物联网应用。

公众号:迅为电子

-----------------------------------------------

69.1 编译脚本分析

在第六十七章的内容里面,我们编译生成了 flash.bin 文件,在生成 flash.bin 文件的过程中,我们是手动输入命令生成的,但是为了加快测试速度,我们本章节要编写一个自动化脚本。

在第六十七章节,我们已经下载了 NXP 官方提供的 uboot 源码,本章节我们要将此源码移植到迅为 iTOP-IMX8MM 开发板上。在/home/topeet/bsp_kernel_imx 目录下新建一个编译脚本 build.sh。

69.2 增加 bin 文件

将网盘资料里面“iTOP-i.MX8MM 开发板\02-i.MX8MM 开发板网盘资料汇总(不含光盘内容)\嵌入式 Linux

开发指南(iTOP-i.MX8MM)手册配套资料\3.Linux 系统移植\5.移植 uboot 需要用的文件”提供的文件拷贝到

/home/topeet/bsp_kernel_imx 目录下。

69.3 配置电源管理芯片

迅为 iMX8MM 采用了 PCA9450A 电源管理,拒绝老旧方案,采用 NXP 全新研制配套 i.MX8M Mini 的电

源管理芯片,有六个降压稳压器,五个线性稳压器和一个负载开关,为整个系统的稳定运行提供了更可靠

的保证。接下来我们需要在 uboot 源码中配置好电源管理芯片。

1 首先在默认的 uboot 设备树中进行配置,打开

/home/topeet/bsp_kernel_imx/bsp_kernel_imx/uboot-imx/arch/arm/dts/fsl-imx8mm-evk.dts 文件,将默认的电

源管理芯片注释掉,替换为 pca9450。修改为如下图所示:

2 然后修改 pmic 的驱动 uboot-imx/drivers/power/pmic/Kconfig,添加如下图所示代码:

config DM_PMIC_PCA9450

bool "Enable Driver Model for PMIC PCA9450"

depends on DM_PMIC

help

This config enables implementation of driver-model pmic uclass features

for PMIC PCA9450. The driver implements read/write operations.

3 然后修改 uboot-imx/drivers/power/pmic/Makefile 文件,添加如下图所示代码:

obj-$(CONFIG_$(SPL_)DM_PMIC_PCA9450) += pca9450.o

obj-$(CONFIG_POWER_PCA9450) += pmic_pca9450.o

4 然后将资料包里面的 pca9450.c 和 pmic_pca9450.c 拷贝到源码 uboot-imx/drivers/power/pmic/目录下。

5 修改 uboot-imx/include/configs/imx8mm_evk.h 文件,修改为如下图所示:

#if 0

#define CONFIG_POWER_BD71837

#else

#define CONFIG_POWER_PCA9450

#endif

#ifdef CONFIG_TARGET_IMX8MM_DDR4_EVK

#define CONFIG_SYS_FSL_USDHC_NUM

2//1

#else

#define CONFIG_SYS_FSL_USDHC_NUM

2

#endif

接下来重新打开一个窗口,输入 make menuconfig,我们在 menuconfig 中配置 PCA9450,

然后点击保存“save”到 configs/imx8mm_ddr4_evk_defconfig,

然后输入以下命令,将默认的配置文件覆盖.config 文件。

make imx8mm_ddr4_evk_defconfig

69.4 配置 otg 烧写

打开设备树文件 uboot-imx/arch/arm/dts/fsl-imx8mm-evk.dts,修改节点为如下图所示:

&usbotg1 {

status = "okay";

/*extcon = <&typec_ptn5110_1>;*/

drm_mode= "otg";

picophy,pre-emp-curr-control = <3>;

picophy,dc-vol-level-adjust = <7>;

};

&usbotg2 {

status = "okay";

/*extcon = <&typec_ptn5110_2>;*/

drm_mode= "otg";

picophy,pre-emp-curr-control = <3>;

picophy,dc-vol-level-adjust = <7>;

};

修改 uboot-imx/arch/arm/dts/fsl-imx8mm-evk.dts 文件,

修改 uboot-imx/drivers/usb/gadget/f_fastboot.c,修改为如下图所示:

static ulong bootloader_mmc_offset(void)

{

if (is_imx8m() || (is_imx8() && is_soc_rev(CHIP_REV_A)))

return 0x8400;

else if (is_imx8qm()) {

int dev_no = mmc_get_env_dev();

if (MEK_8QM_EMMC == dev_no)

/* target device is eMMC boot0 partition, bootloader offset is 0x0 */

return 0x0;

else

/* target device is SD card, bootloader offset is 0x8000 */

return 0x8000;

}

else if (is_imx8())

return 0x8000;

else

return 0x400;

}

修改 uboot-imx/drivers/usb/gadget/f_fastboot.c,

69.5 修改默认的配置文件

源码默认的配置文件是 uboot-imx/configs/imx8mm_ddr4_evk_defconfig,我们修改此文件,我们将

DEFAULT_FDT_FILE 修改为 itop8mm-evk.dtb,如下图所示:DEFAULT_FDT_FILE 是设置内核默认的设备树文件。

CONFIG_DEFAULT_FDT_FILE="itop8mm-evk.dtb"

将这行注释掉,如下图所示:

#CONFIG_USB_TCPC=y

69.6 修改 i2c.h

修改 uboot-imx/arch/arm/include/asm/arch-imx8/i2c.h 文件,

69.7 测试烧写

修改完上述功能,然后输入以下命令编译 uboot,如下图所示:

clear && ./build.sh uboot

编译完会在 result 目录下生成 flash.bin 文件,如下图所示:

然后我们可以烧写生成的 flash.bin +网盘默认提供的 rootfs.sdcard 镜像,如果 uboot 可以正常启动内核

镜像,说明 uboot 移植成功。Uboot 启动如下图所示:

接下来的章节我们来学习移植内核。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304772
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209315
  • Uboot
    +关注

    关注

    4

    文章

    125

    浏览量

    28213
收藏 人收藏

    评论

    相关推荐

    嵌入式 Linux 操作系统配置

    随着物联网(IoT)和智能设备的快速发展,嵌入式系统在各个领域扮演着越来越重要的角色。Linux因其开源、灵活和稳定的特性,成为嵌入式系统
    的头像 发表于 11-06 10:22 332次阅读

    北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器

    北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器
    的头像 发表于 10-25 14:56 298次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】itop-龙芯2k1000<b class='flag-5'>开发指南</b><b class='flag-5'>Linux</b>基础入门vim 编辑器

    北京RK3568开发嵌入式学习之Linux驱动全新更新-CAN+

    北京RK3568开发嵌入式学习之Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 494次阅读
    <b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3568<b class='flag-5'>开发</b>板<b class='flag-5'>嵌入式</b>学习之<b class='flag-5'>Linux</b>驱动全新更新-CAN+

    北京】《stm32mp157开发嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载

    北京】《stm32mp157开发嵌入式linux开发
    的头像 发表于 09-03 16:26 766次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】《stm32mp157<b class='flag-5'>开发</b>板<b class='flag-5'>嵌入式</b><b class='flag-5'>linux</b><b class='flag-5'>开发指南</b>》第五章 Ubuntu使用apt-get下载

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序
    的头像 发表于 09-02 09:11 477次阅读

    嵌入式linux开发板怎么操作

    开发板概述 嵌入式Linux开发板是一种专门嵌入式系统开发
    的头像 发表于 09-02 09:09 370次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统嵌入式
    的头像 发表于 09-02 09:07 374次阅读

    北京】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植-第六十七章 Uboot编译及移植

    i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;核Cortex-A53,单核Cortex-M4,多达五个内核,主频高达1.8GHz,2GDDR4内存
    的头像 发表于 08-07 15:08 934次阅读
    【<b class='flag-5'>北京</b><b class='flag-5'>迅</b><b class='flag-5'>为</b>】《<b class='flag-5'>i.MX8MM</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>开发指南</b>》-<b class='flag-5'>第四篇</b> <b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b><b class='flag-5'>系统</b><b class='flag-5'>移植</b><b class='flag-5'>篇</b>-<b class='flag-5'>第六十</b>七章 <b class='flag-5'>Uboot</b>编译及<b class='flag-5'>移植</b>

    RT-Thread出席第六届中国嵌入式技术大会,共话嵌入式操作系统与智能工业

    第六届中国嵌入式技术大会将于8月27-28日在深圳会展中心(福田)1号馆举行。本届大会以“AI与开源,开启嵌入式系统智能新时代”为主题,聚焦
    的头像 发表于 08-03 08:35 393次阅读
    RT-Thread出席<b class='flag-5'>第六</b>届中国<b class='flag-5'>嵌入式</b>技术大会,共话<b class='flag-5'>嵌入式</b>操作<b class='flag-5'>系统</b>与智能工业

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统

    【出版发行】嵌入式系统原理与开发——基于RISC-V和Linux系统
    的头像 发表于 07-26 08:36 310次阅读
    【出版发行】<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>原理与<b class='flag-5'>开发</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>

    专家力荐|《嵌入式系统原理与开发——基于RISC-V和Linux系统》新书发售

    当前,嵌入式系统已成为智能设备的核心之一,RISC-V+Linux的开源力量嵌入式系统注入强大
    的头像 发表于 07-24 08:20 597次阅读
    专家力荐|《<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>原理与<b class='flag-5'>开发</b>——基于RISC-V和<b class='flag-5'>Linux</b><b class='flag-5'>系统</b>》新书发售

    嵌入式人工智能的就业方向有哪些?

    网络编程开发及实战下 数据库开发 Linux应用开发综合实战 三:嵌入式Linux
    发表于 02-26 10:17

    嵌入式软件开发应该掌握哪些知识?

    的控制,如GPIO、串口、SPI、I2C 等。这使得嵌入式软件开发人员能够充分利用硬件资源,满足特定的需求。 1.2数据结构与算法 嵌入式系统
    发表于 02-19 11:23

    如何在飞凌嵌入式T113-i开发板的Buildroot中移植MQTT协议?

    飞凌嵌入式OK113i-S开发板上市一段时间以来收获了很多关注,也成为了许多客户项目选型的优质之选。在实际的项目开发中,工程师朋友们可能会需要在文件
    的头像 发表于 01-26 08:02 515次阅读
    如何在飞凌<b class='flag-5'>嵌入式</b>T113-<b class='flag-5'>i</b><b class='flag-5'>开发</b>板的Buildroot中<b class='flag-5'>移植</b>MQTT协议?

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发
    的头像 发表于 01-22 14:22 960次阅读