正点原子STM32MP157学习——1.开发环境及基本知识

这篇具有很好参考价值的文章主要介绍了正点原子STM32MP157学习——1.开发环境及基本知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、开发环境搭建

        官方推荐使用VMWare15+Ubuntu18.04,之前自己做一些开发使用的VMWare+Ubuntu20.04,懒得重新安装,后续踩坑再填。

        在Windows下需要安装STM32CubeMX、STM32CubeIDE(这两个用来配置和编写MCU代码)和STM32Programmer(烧录工具)。这三个软件需要java环境,所以还需要安装java。在此不做叙述。

二、U-Boot启动原理

        U-Boot类似于电脑的BIOS,入口是上电自动启动,唯一出口是加载系统镜像,在U-Boot内还可以进行一些内核的启动配置,如启动介质参数,网络配置参数等。

        通常在内核中会固化一块片内ROM和一个SYSRAM,启动时,片内ROM的BL1(BootLoader1,第一阶段启动文件)部分先加载到核内RAM中(也有设计将此部分烧写在U-Boot的头部位置),然后判断自己在主存中还是启动设备(静态内存)Booting Device中,如果是后者,就将整个U-Boot搬运到SDRAM中,之后跳转到BL2中,加载驱动、命令行等。最后,将整个OS加载到SDRAM中,再跳转到OS部分执行。

正点原子STM32MP157学习——1.开发环境及基本知识

         在STM32MP157中,除了linux开发常见的三大板块:U-Boot、Kernel & DTB、Rootfs以外,还有一个涉及到系统安全的TF-A部分,正点原子教程中对此部分仅涉及到了移植教程,对内部的实现方式无额外解读。此部分先略过。

三、涉及STM32MP157启动的一些概念

【1】FSBL:

        全称为 First stage boot loader,也就是第一阶段启动文件。一般是 TF-A 镜像,可以换成自己编写的程序,SYSRAM的地址空间;0X2FFC0000~0X2FFFFFFF,FSBL起始地址:0X2FFC2400,但是前端会带有256KB的头部信息,所以替换成自己的程序时,起始地址为:0X2FFC2500,整个FSBL大小不能超过247KB。

【2】SSBL:第二阶段启动文件,一般是U-Boot,有的系统还会需要设备树(.dtb)文件,此部分在片外的DDR中运行,所以不需要担心空间问题。

【3】默认外部晶振:

        24MHz,在自己设计板子时用到,尽量不要更改。(ROM代码自动检测,可以为8,10,12,14,16,20,24,25,26,28,32,36,40,48,默认为24)

【4】串口启动:

        使用UART烧写系统,只能使用串口2,3,4,5,6,7,8这几个串口,自己画板子的时候最好按照这样设计,并使用推荐引脚。

【5】Flash设备启动要求:

        EMMC:

        boot1、 boot2、 RPMB 这三个分区代销是固定的,用户不能修改, boot1、 boot2 分区存在的意义就是用于引导系统。

        ST 会使用 EMMC 的 boot1 和 boot2 这两个分区作为 FSBL,但是同一时间只有一个有效,
ROM 代码会加载有效的哪个 FSBL。ROM 代码使用单 bit 模式来操作 EMMC, 默认情况下 ROM
代码使用连接到 SDMMC2 上的 EMMC

正点原子STM32MP157学习——1.开发环境及基本知识

        SD卡:

        SD 卡也包含两个 FSBL,但是 SD 卡没有 boot1 和 boot2 这样的物理分区。 ROM 代码默认
尝试加载第一个 FSBL,如果第一个 FSBL 加载失败,那么 ROM 代码就会加载第二个 FSBL。第一个 FSBL 的起始地址为0X4400,第二个 FSBL 的起始地址为 0X44400

【6】TF-A头部信息:

        TF-A 编译生成二进制 bin 文件,需要在前面添加一段头部信息,这段头部信息也包含了鉴权内容。这段信息在编译 ST 官方提供的 TF-A 或者 Uboot 的时候会自动添加,编写 A7 裸机的时候需要自己使用 stm32image 工具在 bin 文件前面添加头部信息。STM32image工具为linux下运行,在使用前需要编译,然后对指定文件添加。

正点原子STM32MP157学习——1.开发环境及基本知识

【7】整体的系统启动流程:

正点原子STM32MP157学习——1.开发环境及基本知识文章来源地址https://www.toymoban.com/news/detail-469490.html

到了这里,关于正点原子STM32MP157学习——1.开发环境及基本知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32MP157驱动开发——按键驱动(异步通知)

    Linux 系统中也有很多信号,在 Linux 内核源文件 includeuapiasm-genericsignal.h 中,有很多信号的宏定义: 就 APP 而言,你想处理 SIGIO 信息,那么需要提供信号处理函数,并且要跟 SIGIO 挂钩。这可以通过一个 signal 函数 来“给某个信号注册处理函数”,用法如下: 重点从②开始:

    2024年02月15日
    浏览(42)
  • STM32MP157驱动开发——USB设备驱动

    参考文章:【正点原子】I.MX6U嵌入式Linux驱动开发——Linux USB驱动   由于 USB 协议太过庞大和复杂,所以本节只对 STM32MP157 自带的 USB 驱动进行使能和测试。详细的 USB 接口和协议的介绍,可以参考原子哥的资料《USB2.0 协议中文版.pdf》和《USB3.0 协议中文版.pdf》。   USB 全

    2023年04月14日
    浏览(39)
  • STM32MP157驱动开发——按键驱动(线程化处理)

    工作队列是在内核的线程的上下文中执行的 工作队列中有多个 work,前一个 work 没处理完会影响后面的 work。解决方法有如下2种: 比如自己创建一个内核线程,不跟别的 work 在一块。例如存储设备比如 SD/TF采用的就是单独一个线程。 使用线程化的中断处理。中断的处理仍然

    2024年02月16日
    浏览(34)
  • STM32MP157驱动开发——LED驱动(原始架构)

    LED 的驱动方式,常见的有四种。 ① 使用引脚输出 3.3V 点亮 LED,输出 0V 熄灭 LED。 ② 使用引脚拉低到 0V 点亮 LED,输出 3.3V 熄灭 LED。 ③ 使用引脚输出 1.2V 点亮 LED,输出 0V 熄灭 LED。 ④ 使用引脚输出 0V 点亮 LED,输出 1.2V 熄灭 LED。 有的芯片为了省电等原因,其引脚驱动能力

    2024年02月03日
    浏览(31)
  • STM32MP157驱动开发——按键驱动(POLL 机制)

    使用休眠-唤醒的方式等待某个事件发生时,有一个缺点:等待的时间可能很久。我们可以加上一个超时时间,这时就可以使用 poll 机制。 ① APP 不知道驱动程序中是否有数据,可以先调用 poll 函数查询一下,poll 函数可以传入超时时间; ② APP 进入内核态, 调用到驱动程序的

    2024年02月15日
    浏览(31)
  • STM32MP157驱动开发——按键驱动(休眠与唤醒)

    当应用程序必须等待某个事件发生,比如必须等待按键被按下时,可以使用“休眠-唤醒”机制: ① APP 调用 read 等函数试图读取数据,比如读取按键; ② APP 进入内核态,也就是调用驱动中的对应函数,发现有数据则复制到用户空间并马上返回; ③ 如果 APP 在内核态,也就

    2024年02月16日
    浏览(35)
  • STM32MP157驱动开发——按键驱动(定时器)

    定时器涉及函数参考内核源码:includelinuxtimer.h 给定时器的各个参数赋值: 设置定时器 :主要是初始化 timer_list 结构体,设置其中的函数、参数。 a) 向内核添加定时器。timer-expires 表示超时时间。 b) 当超时时间到达,内核就会调用这个函数:timer-function(timer-data)。 修改定时

    2024年02月15日
    浏览(40)
  • 【正点原子STM32连载】 第十章 STM32CubeMX简介 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html STM32CubeMX是由ST公司开发的图形化代码自动生成工具,能够快速生成初始化代码,如配置GPIO,时钟树

    2024年01月15日
    浏览(49)
  • STM32MP157驱动开发——Linux LCD驱动(上)

      LCD 是很常用的一个外设,通过 LCD 可以显示图片、界面UI等,提高人机交互的效率。STM32MP1 提供了一个 LTDC 接口用于连接 RGB 接口的液晶屏。本节就来学习如何使用这个接口。   LCD 全称是 Liquid Crystal Display,也就是液晶显示器,是现在最常用到的显示器。网上对于 LCD

    2024年02月08日
    浏览(35)
  • STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

    iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。 开发板既有A7核,又有M4核,从学习者角度来看

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包