【LINUX】i.MX6学习笔记(1) 调试环境搭建(MfgTool) + 学习资料(正点原子 + 韦东山)

2023-10-27

1. 引言

说起来,和linux打交道也挺久了,最近3年的主要工作都是在linux下做的应用层开发。
在做应用层之前,因为做控制算法的原因,很多东西又是在单片机或者DSP上跑的裸核。
二者一合并,中间就出现了一个巨大的断层,就是Linux,驱动,不知道是中间这部分是怎么跑的。
其实13年自己就入了第一块arm11的开发板tiny6410,当时资料十分分散,自己又没有认清现实(linux才是王道),就没有花大力气搞,一回首已是百年身,感觉错过了一个亿。
好在万事着手都不迟,错过一个亿,还有十个亿在等着。

2. 资源

2.1 开发板

开发板入的是正点原子的ALPHA v2.0 EMMC版本,之前做ST的时候一直在openEDV的论坛逛,觉得氛围挺好,正好看到原子出了linux的板子就入了。因为原子教程的PDF书比较详细,看书就够了。(左神很强,但视频真不咋地。。好在我也不爱看视频)。
板子是用核心板+底板的结构,比较喜欢,这样自己做项目,打个底板就比较简单,毕竟我只是个写代码的,画板子只是无奈。

  • IMX6UL
  • DDR 256M
  • EMMC 8G

2.2 书籍教程

书籍用的就是开发板子配套的 ,开源免费,持续更新,比较详细

其他也会看韦东山的新书,就比较简略

2.3 视频教程

虽然我是不爱看视频的,但是韦东山的视频还是很有水平的。加上现在重录了快节奏版本的,而且目前还免费,所以还是跟着在看的。每集时间补偿,干货很多。


3. 版本烧录

接串口,装驱动这些我就略过了,默认都是有基本的调试基础的。

3.1 裸机烧录

3.1.1 工具选择

烧录这部分最早是按原子的教程来的,Ubuntu下烧TF卡,然后从卡起。
无奈我的编译机Ubuntu是个服务器,不好插U盘,没办法,用回vmware,但是虚拟机又识别不到USB。无奈去找了下windows下的工具,还真找到不少,这部分百问网总结的比较全。
简单总结下如下:

  • Windows
    • 100ask_imx6ull_flashing_tool 百问网开发
    • MfgTool
    • uuu.exe (MfgTool3.0)
  • Ubuntu
    • Imxdownload 正点原子开发
    • uuu
    • MfgTool

相关的介绍资源有:

  • 《100ask_imx6ull开发板用户手册-入门篇 v2.1》 第10章
  • 《I.MX6U嵌入式Linux驱动开发指南 v1.2 》 第8章,第39章

从好用程度来说,100ask_imx6ull_flashing_tool 最简单,而且对自己开发板的支持最好。

3.1.2 使用步骤

3.1.2.1 如何制作.imx映像

编译出来的.elf或者bin是不能直接烧录的,要转成.imx格式才能下载。
工具

  • 正点原子 imxdwnload
  • 韦东山 mkimage
3.1.2.2 目标生成

这里只验证流程,暂时不码代码
考出原子的代码2_ledc,修改链接地址为0x80100000。
因为在韦东山的100ask_imx6ull_flashing_tool中,我没看到指定链接地址的地方,所以姑且认为是写固定了。 这里存疑问(是不是链接地址一定要改成韦东山的??)
修改makefile最后几句,利用mkimage来做imx文件

3.1.2.3 版本下载

开发板以USB启动,使用专业版进行下载即可。
在这里插入图片描述

3.2 系统烧录

3.2.1 MfgTool

系统烧录的话,100ask_imx6ull_flashing_tool 也很好用,但是这里我们还是用NXP的原生工具 MfgTool 来做,毕竟是官方的。

3.2.1.1 准备镜像

烧系统要4个镜像

  • uBoot
  • Linux kernel
  • DeviceTree
  • rootfs
    工具有2个文件夹要注意
  • …\L4.1.15_2.0.0-ga_mfg-tools\mfgtools-with-rootfs\mfgtools-with-rootfs\mfgtools\Profiles\Linux\OS Firmware\files\
  • …\L4.1.15_2.0.0-ga_mfg-tools\mfgtools-with-rootfs\mfgtools-with-rootfs\mfgtools\Profiles\Linux\OS Firmware\firmware\

files里的文件是板子是下载到内存里,先把系统启动起来,然后会把firmware里的镜像烧到EMMC上。
所以说为了烧录版本,要把自己编译的版本放在firmware里。

因为我们是EMMC的版本,所以启动脚本用mfgtool2-yocto-mx-evk-emmc.vbs,
双击之前点击运行,
在这里插入图片描述

这时候从串口1就开始向外打印一些log。

等待完成后即可。

官方系统要烧比较久,要有耐心。

反正我是第二天早晨看的,成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LINUX】i.MX6学习笔记(1) 调试环境搭建(MfgTool) + 学习资料(正点原子 + 韦东山) 的相关文章

  • 如何更改 Kubernetes 中的文件系统观察程序限制 (fs.inotify.max_user_watches)

    我在用着pm2 https github com Unitech pm2查看保存我的应用程序服务器的 NodeJS 程序源代码的目录 该程序在 Kubernetes 集群中运行 但是 我收到此错误 ENOSPC System limit f
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • bash.sh 运行 cron 的权限被拒绝

    如何在这里使用 bash 脚本运行 cron 我做了如下操作 这里有错误 我想知道如何在 ubuntu 中做到这一点 我现在对它感到震惊 bash sh 文件 bin bash cd var www Controller usr bin p
  • 无法使用 tar -cvpzf 解压完整目录

    把我的头敲在这上面 I used tar cvpzf file tar gz压缩一个完整的目录 我将文件移动到另一台服务器 并尝试解压缩复制存档的目录 无法使其发挥作用 bash 3 2 tar xvpzf news tar gz tar
  • 终止 ssh 会话会终止正在运行的进程

    我正在使用 ssh 连接到我的 ubuntu 服务器 我使用命令启动编码程序 然而 似乎当我的 ssh 会话关闭时 因为我在进入睡眠状态的笔记本电脑上启动它 有没有办法避免这种情况 当然 阻止我的笔记本电脑休眠并不是永久的解决方案 运行你的
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • 我如何知道 std::map 插入成功还是失败?

    我在多线程应用程序中有一个映射 将名为 uuid 的类映射到指针 我想知道插入操作是否成功或失败 e g mymap insert hint MyMap value type entry uuid itemptr 如果失败的话会抛出异常或者
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • “以下软件包将被更高优先级的频道取代”是什么意思?

    我正在尝试将 fuzzywuzzy 安装到 64 位 Linux 中的 Anaconda 发行版上 当我这样做时 它试图改变我的conda and conda env to conda forge渠道 如下 我通过以下方式在 anacond
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • AMD OpenCL 在 Linux 上工作所需的最小必要文件子集是什么?

    我已经使用 buildroot 构建了 Linux 内核 我已将开源 amdgpu 驱动程序和所需的固件合并到其中 驱动程序很好 检测 GPU 模式设置运行良好 调整 小文本 的分辨率 启动后会显示命令行 现在我需要运行 OpenCL 程序
  • 在 Windows 下使用 linux 实用程序的最佳方法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 实用程序 如 sed awk 和其他 shell 脚本功能 非常棒 但当我在 Windows 上进行开发并且无法使用其中任何一
  • 串口读取未完成

    下面的函数用于在Linux下从串口读取数据 我在调试时可以读取完整的数据 但是当我启动程序时 读缓冲区似乎并不完整 我正确接收了一小部分数据 但缓冲区的其余部分完全正确zero 可能是什么问题呢 int8 t serial port ope
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • 如何在 Linux 中制作一个将文件转换为大写的 x86 汇编程序?

    我找到了一个名为 ProgrammingGroundUp 1 0 booksize pdf 的 pdf 文件 其中一个项目是制作一个汇编程序 该程序接收文件并将其转换为大写 section data CONSTANTS system cal
  • 分割 tar.bz2 文件并单独提取每个文件

    我可以将一个大的 tar bz2 文件分割成几个较小的文件并在 Ubuntu 中单独提取这些小 tar bz2 文件吗 Thanks 我认为这不容易实现 A tar bz2是单个流 它没有像这样的索引zip这将允许跳到存档中特定文件的开头
  • 使用多个 NIC 广播 UDP 数据包

    我正在 Linux 中为相机控制器构建嵌入式系统 非实时 我在让网络做我想做的事情时遇到问题 该系统有 3 个 NIC 1 个 100base T 和 2 个千兆端口 我将较慢的连接到相机 这就是它支持的全部 而较快的连接是与其他机器的点对
  • 为什么 ls -l 中的“总计”加起来不等于列出的总文件大小? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 为什么是total在输出中ls l打印为64并不是26078列出的所有文件的总数是多少 ls l test ls total 64 rw
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad

随机推荐

  • BI工程师日记

    从17年十月份入职BI工程师半年多的时间里 已熟练使用Tableau及SQL 越来越感觉到tableau的天花板 思考了好久如何打破天花板 想从几个方面入手 1 学习Python数据处理 神经网络庫的使用 结合tableau和Python
  • kubeadm 安装集群 1.16.12

    kubeadm 安装集群 添加源 mirror https mirrors aliyun com mirror https mirrors ustc edu cn docker 源 curl fsSL mirror docker ce li
  • 【喊7的次数重排】

    题目描述 喊7的次数重排 喊7是一个传统的聚会游戏 N个人围成一圈 按顺时针从1到N编号 编号为1的人从1开始喊数 下一个人喊的数字为上一个人的数字加1 但是当将要喊出来的数字是7的倍数或者数字本身含有7的话 不能把这个数字直接喊出来 而是
  • 对串级PID控温算法的解析

    目录 前言 单级PID 串级PID 系统分析 算法分析 总结 前言 笔者在做项目的过程中 需要对一个目标物体做精确控温 精度要求 1 需要在两分钟内使用电阻发热贴将温度由20控制到41 且无超调 根据控制原理 做精确控温应该使用PID算法
  • 026-从零搭建微服务-文件服务(二)

    写在最前 如果这个项目让你有所收获 记得 Star 关注哦 这对我是非常不错的鼓励与支持 源码地址 后端 https gitee com csps mingyue 源码地址 前端 https gitee com csps mingyue u
  • 【点云】PointCNN: Convolution On X-Transformed Points

    目录 测试 1 摘要 2 介绍 3 PointCNN 3 1 分层卷积 3 2 X Conv操作 3 3 PointCNN结构 4 参考 4 1 ELU激活函数 4 2 BatchNorm 测试 在Semantic3D上跑了PointCNN
  • jitter概念理解

    一般 PLL等时钟产生模块 都会有RMS jitter的描述 根据这个参数 可以计算出相关时钟的clock jitter 方便设置综合sdc的时钟约束 为什么只有RMS jitter 因为期望值就是理论周期值 根据期望值 RMS 均方差 就
  • 数据运营-计算留存率和转化率(漏斗分析&Python)

    一 案例数据 在数据运营中 留存率分析和转化率 漏斗 分析是经常用到的 本文结合具体案例总结了如何利用python求n日留存率以及各环节间转化率 指标释义 案例数据集介绍 本文是利用淘宝app的运营数据进行分析的 数据集中包含以下字段 部分
  • vue项目+el-tree,树结构展示,非常完整的代码,包含调接口拿真实数据渲染

    温故而知新 最近项目中频繁使用树形结构展示效果 因为不熟悉 备受折磨 代码贴出来 再复习一次 代码太长了 想看分析的可以搜我下一篇文章 下一篇会详细的写如何在项目中使用 效果 左侧是树 右侧是表格 点击任何一行都会展示对应的表格 完整代码如
  • Acwing 898. 数字三角形

    f i j 表示所有从起点开始 走到 i j 的路径中的和的最大值 自上而下到达 i j 有两种路径 一个是左上方 一个是正上方 f i j max f i 1 j 1 a i j f i 1 j a i j 注意边界情况 边界初始化为 I
  • 单机网游架设必学:Win7安装虚拟机详细步骤

    1 下载虚拟机软件 VMware VMware Workstation 中文正式版 10 0 1 137977 2 查了很多资料说虚拟机不会占用磁盘 但是我感觉应该是有影响的 所以这里我特意分出来一个空白的60G盘做测试用 分盘用 Acro
  • PDB文件详解

    PDB文件的介绍 PDB Program Data Base 意即程序的基本数据 是VS编译链接时生成的文件 DPB文件主要存储了VS调试程序时所需要的基本信息 主要包括源文件名 变量名 函数名 FPO 帧指针 对应的行号等等 因为存储的是
  • 强化学习算法 DQN 解决 CartPole 问题,代码逐条详解

    本文内容源自百度强化学习 7 日入门课程学习整理 感谢百度 PARL 团队李科浇老师的课程讲解 强化学习算法 DQN 解决 CartPole 问题 移动小车使得车上的摆杆保持直立 这个游戏环境可以说是强化学习中的 Hello World 大
  • Visual C++ ADO数据库编程入门(1)

    ADO 是目前在Windows环境中比较流行的客户端数据库编程技术 ADO是建立在OLE DB底层技术之上的高级编程接口 因而它兼具有强大的数据处理功能 处理各种不同类型的数据源 分布式的数据处理等等 和极其简单 易用的编程接口 因而得到了
  • 分布式系统详解--框架(Hadoop--RPC协议)

    分布式系统详解 框架 Hadoop RPC协议 在之前的一篇文章当中已经写过一篇文章是关于RPC通信协议的文章 是 分布式系统详解 基础知识 通信 是讲的关于网络通信的最基本的知识 这篇文章也简单讲一下关于hadoop内部的网络通信 一 h
  • 蓝桥杯第四届题目答案

    蓝桥杯第四届省赛javaB组题目答案 第一题 标题 世纪末的星期 曾有邪教称1999年12月31日是世界末日 当然该谣言已经不攻自破 还有人称今后的某个世纪末的12月31日 如果是星期一则会 有趣的是 任何一个世纪末的年份的12月31日都不
  • android instrumentation 原理,理解 android instrumentation

    instrumentation 先看activity的启动过程 Override public void startActivity Intent intent Nullable Bundle options if options null
  • pyqt拖拽获取文件路径

    main py import sys import PyQt5 QtWidgets as qw from mainwindow import Ui MainWindow class TestWindow qw QMainWindow def
  • [UE4]C++中SpawnActor用法(动态创建Actor)

    注 这里创建actor跟unity有明显不同 ue不能创建一个单独的actor 单独的actor也没意义 ue里的actor是用来继承的 这里创建的actor都是实例化actor的子类 细想下 并不影响动态创建对象 ue417用下面的写法貌
  • 【LINUX】i.MX6学习笔记(1) 调试环境搭建(MfgTool) + 学习资料(正点原子 + 韦东山)

    1 引言 说起来 和linux打交道也挺久了 最近3年的主要工作都是在linux下做的应用层开发 在做应用层之前 因为做控制算法的原因 很多东西又是在单片机或者DSP上跑的裸核 二者一合并 中间就出现了一个巨大的断层 就是Linux 驱动