imx6q处理器,linux操作系统平台搭建 从SD卡启动系统

2024-01-28 15:32

本文主要是介绍imx6q处理器,linux操作系统平台搭建 从SD卡启动系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是参考http://blog.csdn.net/girlkoo/article/details/44536447和http://blog.csdn.net/girlkoo/article/details/44626011这篇两篇文章,然后把移植过程和学习笔记再次留下.


本文的目的是,完成一个从sd卡启动的一个纯净版的linux系统移植,其实就是一个很裸的根文件系统,后期有空会试着把QT移植进入.

下面开始移植了,我使用的开发板是天嵌的E9,但是使用主要是imx6q开发板便宜,现在选择的余地可能大很多.

我移植过程的源码下载地址为:http://pan.baidu.com/s/1bnOr7Ef,提供内容见里面的readme

1. uboot 的移植

资料下载:

官方资源下载:uboot的下载地址,在百度上搜索git freescale 即进入freescale的管理库,里面资源很多,uboot版本为imx_v2009.08_3.0.35_4.1.0,点击download即可下载,这个版本对应的linux版本为3.0.35_4.1.0,当然linux内核版本在git freescale也可下载.

(1)首先是习惯性的 make distclean,移除所有以前的记录,这样保证我是在一个干净的环境下进行编译.

(2)参考上面文档,我的参考平台是mx6q_sabresd,我就直接在原版基础上进行修改了,需修改的文件都在"./board/freescale/mx6q_sabresd"下"flash_header.S"和"mx6q_sabresd.c".

(3)修改"flash_header.S"文件,使用下面代码替换源文件中代码

#else  /* i.MX6Q */
dcd_hdr:          .word 0x40a002D2 /* Tag=0xD2, Len=83*8 + 4 + 4, Ver=0x40 */
write_dcd_cmd:    .word 0x049c02CC /* Tag=0xCC, Len=83*8 + 4, Param=0x04 *//* DCD */MXC_DCD_ITEM(1, IOMUXC_BASE_ADDR + 0x798, 0x000C0000)
MXC_DCD_ITEM(2, IOMUXC_BASE_ADDR + 0x758, 0x00000000)MXC_DCD_ITEM(3, IOMUXC_BASE_ADDR + 0x588, 0x00000030)
MXC_DCD_ITEM(4, IOMUXC_BASE_ADDR + 0x594, 0x00000030)MXC_DCD_ITEM(5, IOMUXC_BASE_ADDR + 0x56c, 0x00000030)
MXC_DCD_ITEM(6, IOMUXC_BASE_ADDR + 0x578, 0x00000030)
MXC_DCD_ITEM(7, IOMUXC_BASE_ADDR + 0x74c, 0x00000030)MXC_DCD_ITEM(8, IOMUXC_BASE_ADDR + 0x57c, 0x00000030)MXC_DCD_ITEM(9, IOMUXC_BASE_ADDR + 0x58c, 0x00000000)
MXC_DCD_ITEM(10, IOMUXC_BASE_ADDR + 0x59c, 0x00000030)
MXC_DCD_ITEM(11, IOMUXC_BASE_ADDR + 0x5a0, 0x00000030)
MXC_DCD_ITEM(12, IOMUXC_BASE_ADDR + 0x78c, 0x00000030)MXC_DCD_ITEM(13, IOMUXC_BASE_ADDR + 0x750, 0x00020000)MXC_DCD_ITEM(14, IOMUXC_BASE_ADDR + 0x5a8, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(15, IOMUXC_BASE_ADDR + 0x5b0, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(16, IOMUXC_BASE_ADDR + 0x524, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(17, IOMUXC_BASE_ADDR + 0x51c, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(18, IOMUXC_BASE_ADDR + 0x518, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(19, IOMUXC_BASE_ADDR + 0x50c, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(20, IOMUXC_BASE_ADDR + 0x5b8, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(21, IOMUXC_BASE_ADDR + 0x5c0, 0x00000018) /* 00000030 */MXC_DCD_ITEM(22, IOMUXC_BASE_ADDR + 0x774, 0x00020000)MXC_DCD_ITEM(23, IOMUXC_BASE_ADDR + 0x784, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(24, IOMUXC_BASE_ADDR + 0x788, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(25, IOMUXC_BASE_ADDR + 0x794, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(26, IOMUXC_BASE_ADDR + 0x79c, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(27, IOMUXC_BASE_ADDR + 0x7a0, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(28, IOMUXC_BASE_ADDR + 0x7a4, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(29, IOMUXC_BASE_ADDR + 0x7a8, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(30, IOMUXC_BASE_ADDR + 0x748, 0x00000018) /* 00000030 */MXC_DCD_ITEM(31, IOMUXC_BASE_ADDR + 0x5ac, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(32, IOMUXC_BASE_ADDR + 0x5b4, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(33, IOMUXC_BASE_ADDR + 0x528, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(34, IOMUXC_BASE_ADDR + 0x520, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(35, IOMUXC_BASE_ADDR + 0x514, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(36, IOMUXC_BASE_ADDR + 0x510, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(37, IOMUXC_BASE_ADDR + 0x5bc, 0x00000018) /* 00000030 */
MXC_DCD_ITEM(38, IOMUXC_BASE_ADDR + 0x5c4, 0x00000018) /* 00000030 */MXC_DCD_ITEM(39, MMDC_P0_BASE_ADDR + 0x800, 0xA1390003) MXC_DCD_ITEM(40, MMDC_P0_BASE_ADDR + 0x80c, 0x001F001F)
MXC_DCD_ITEM(41, MMDC_P0_BASE_ADDR + 0x810, 0x001F001F)
MXC_DCD_ITEM(42, MMDC_P1_BASE_ADDR + 0x80c, 0x001F001F)
MXC_DCD_ITEM(43, MMDC_P1_BASE_ADDR + 0x810, 0x001F001F)MXC_DCD_ITEM(44, MMDC_P0_BASE_ADDR + 0x83c, 0x4333033F)
MXC_DCD_ITEM(45, MMDC_P0_BASE_ADDR + 0x840, 0x032C031D)
MXC_DCD_ITEM(46, MMDC_P1_BASE_ADDR + 0x83c, 0x43200332)
MXC_DCD_ITEM(47, MMDC_P1_BASE_ADDR + 0x840, 0x031A026A)
MXC_DCD_ITEM(48, MMDC_P0_BASE_ADDR + 0x848, 0x4D464746)
MXC_DCD_ITEM(49, MMDC_P1_BASE_ADDR + 0x848, 0x47453F4D)
MXC_DCD_ITEM(50, MMDC_P0_BASE_ADDR + 0x850, 0x3E434440)
MXC_DCD_ITEM(51, MMDC_P1_BASE_ADDR + 0x850, 0x47384839)MXC_DCD_ITEM(52, MMDC_P0_BASE_ADDR + 0x81c, 0x33333333)
MXC_DCD_ITEM(53, MMDC_P0_BASE_ADDR + 0x820, 0x33333333)
MXC_DCD_ITEM(54, MMDC_P0_BASE_ADDR + 0x824, 0x33333333)
MXC_DCD_ITEM(55, MMDC_P0_BASE_ADDR + 0x828, 0x33333333)
MXC_DCD_ITEM(56, MMDC_P1_BASE_ADDR + 0x81c, 0x33333333)
MXC_DCD_ITEM(57, MMDC_P1_BASE_ADDR + 0x820, 0x33333333)
MXC_DCD_ITEM(58, MMDC_P1_BASE_ADDR + 0x824, 0x33333333)
MXC_DCD_ITEM(59, MMDC_P1_BASE_ADDR + 0x828, 0x33333333)MXC_DCD_ITEM(60, MMDC_P0_BASE_ADDR + 0x8b8, 0x00000800)
MXC_DCD_ITEM(61, MMDC_P1_BASE_ADDR + 0x8b8, 0x00000800)MXC_DCD_ITEM(62, MMDC_P0_BASE_ADDR + 0x004, 0x00020036)
MXC_DCD_ITEM(63, MMDC_P0_BASE_ADDR + 0x008, 0x09444040)
MXC_DCD_ITEM(64, MMDC_P0_BASE_ADDR + 0x00c, 0x8A8F7955) /* 555A7975 */
MXC_DCD_ITEM(65, MMDC_P0_BASE_ADDR + 0x010, 0xFF328F64) /* FF328F64 */
MXC_DCD_ITEM(66, MMDC_P0_BASE_ADDR + 0x014, 0x01FF00DB)
MXC_DCD_ITEM(67, MMDC_P0_BASE_ADDR + 0x018, 0x00001740)MXC_DCD_ITEM(68, MMDC_P0_BASE_ADDR + 0x01c, 0x00008000)
MXC_DCD_ITEM(69, MMDC_P0_BASE_ADDR + 0x02c, 0x000026D2)
MXC_DCD_ITEM(70, MMDC_P0_BASE_ADDR + 0x030, 0x008F1023) /* 005A1023 */
MXC_DCD_ITEM(71, MMDC_P0_BASE_ADDR + 0x040, 0x00000047) /* 00000027 */MXC_DCD_ITEM(72, MMDC_P0_BASE_ADDR + 0x000, 0x841A0000) /* 831A0000 */MXC_DCD_ITEM(73, MMDC_P0_BASE_ADDR + 0x01c, 0x04088032)
MXC_DCD_ITEM(74, MMDC_P0_BASE_ADDR + 0x01c, 0x00008033)
MXC_DCD_ITEM(75, MMDC_P0_BASE_ADDR + 0x01c, 0x00048031)
MXC_DCD_ITEM(76, MMDC_P0_BASE_ADDR + 0x01c, 0x09408030)
MXC_DCD_ITEM(77, MMDC_P0_BASE_ADDR + 0x01c, 0x04008040)MXC_DCD_ITEM(78, MMDC_P0_BASE_ADDR + 0x020, 0x00005800)MXC_DCD_ITEM(79, MMDC_P0_BASE_ADDR + 0x818, 0x00011117)
MXC_DCD_ITEM(80, MMDC_P1_BASE_ADDR + 0x818, 0x00011117)MXC_DCD_ITEM(81, MMDC_P0_BASE_ADDR + 0x004, 0x00025576)
MXC_DCD_ITEM(82, MMDC_P0_BASE_ADDR + 0x404, 0x00011006)
MXC_DCD_ITEM(83, MMDC_P0_BASE_ADDR + 0x01c, 0x00000000)#endif

(4)修改"mx6q_sabresd.c"文件,完成对应硬件的uart的修改和mmc的修改

uart1移植,修改UART1对应的TXD和RXD引脚.

static void setup_uart(void)
{
#if defined CONFIG_MX6Q/* UART1 TXD *///mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT10__UART1_TXD);/* UART1 RXD *///mxc_iomux_v3_setup_pad(MX6Q_PAD_CSI0_DAT11__UART1_RXD);/* UART1 TXD */

这篇关于imx6q处理器,linux操作系统平台搭建 从SD卡启动系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/654047

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听