迅为i.mx8mm开发板特点:
性能强:i.MX8MM处理器采用了先进的14LPC FinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。
PMIC:采用PCA9450A电源管理,是NXP全新研制配套iMX.8M的电源管理芯片,有六个降压稳压器、五个线性稳压器和一个负载开关,为整个系统的稳定运行提供了更可靠的保证。
接口丰富:千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。
编解码: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 启动如下图所示:
接下来的章节我们来学习移植内核。
全部0条评论
快来发表一下你的评论吧 !