自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 I.MX 6ULL HAB 安全启动实操

本文介绍了在i.MX6ULL处理器上实现安全启动的完整流程。首先基于NXP官方u-boot进行移植,创建自定义板级支持包,包括配置修改、设备树调整和构建流程。详细分析了生成的u-boot-dtb.imx文件结构,重点解析了IVT(Image Vector Table)、Boot Data和DCD(Device Configuration Data)等关键部分。文章提供了完整的构建命令和配置方法,并解释了各数据结构的作用,为在i.MX6ULL处理器上实现HAB(High Assurance Boot)安全启动

2025-10-21 15:17:09 779

原创 IMX6ULL中BootROM包含HAB的启动流程

摘要:本文介绍了IMX6ULL芯片中HAB(High Assurance Boot)安全启动功能的实现流程。HAB通过数字签名验证确保代码完整性,构建从Boot ROM到操作系统的信任链。文章详细分析了HAB的关键组件(公钥/私钥、签名工具)、状态设置(通过eFuse中的SEC_CONFIG位控制)以及两种工作模式(Closed和Open)下的不同验证机制。在Closed模式下会严格验证签名并终止验证失败的启动流程,而Open模式则允许开发调试。文中还比较了两种模式在安全硬件初始化、错误处理等方面的差异,并

2025-08-07 11:19:24 1067

原创 IMX6ULL启动流程

IMX6ULL启动流程解析:从Boot ROM到系统启动 IMX6ULL处理器的启动流程分为多个阶段:上电后首先执行片内固化的Boot ROM代码,该代码根据BOOT_MODE寄存器和eFuse配置选择启动设备(如eMMC/SD卡等)。关键设置BT_FUSE_SEL决定从eFuse还是GPIO获取启动配置,支持开发调试与量产两种模式。Boot ROM支持HAB安全验证,若验证失败则转入串行下载模式(Serial Downloader)用于恢复或调试。最后,通过验证的引导程序(U-boot等)将加载并启动系统

2025-08-06 11:23:42 1001

原创 在Linux中创建LVGL应用

上一篇文章介绍了在这篇接上文, 介绍具体的开发步骤。

2025-07-31 16:42:08 1215

原创 imx6ull UI开发

本文介绍了在imx6ull平台上进行UI开发的基本流程。硬件层面采用LCDIF外设驱动TFT屏幕,内核驱动通过帧缓冲设备/dev/fbX实现显存管理。软件部分分别介绍了LVGL和QT两种UI框架的实现方式:LVGL通过mmap映射显存并实现flush回调函数,QT则通过设置环境变量指定显示设备。文中详细说明了设备树配置、驱动文件位置及显示数据流从应用层到硬件层的传输路径,为imx6ull的UI开发提供了完整的技术参考。

2025-07-18 13:29:35 689

原创 基于 gitee 的 CI/CD

CI/CD 流程是指在软件开发过程中,通过自动化的方式实现代码的持续集成、持续部署和持续交付。

2025-02-10 09:55:36 1837

原创 为STM32CubeIDE工程创建 post-build脚本

在使用STM32CubeIDE开发时,如果需要对最终编译出来的elf文件做二次处理,比如删除部分section,根据配置文件(假设为config.h),对最终的hex文件命名等,则需要添加一个post-build脚本来最终生成的处理elf文件(或hex文件)。

2025-01-22 11:16:40 642

原创 STM32G070CB的USART1_RX引脚

在使用STM32G070CBT6 的 USART1时,发现把 PA10作为 USART1_RX引脚时,接收不到数据。

2024-12-31 14:48:23 769

原创 STM32在bootloader跳转到application时设置MSP

在做bootloader 跳转到application时,经常会看到设置MSP的操作。

2024-12-24 14:15:21 3339

原创 将空白背景透明化

对比鲜明的图片。

2024-12-03 16:36:30 350

原创 C++ 类的赋值运算时,构造函数的调用

这句代码时, 先调用了。, 随后调用拷贝构造函数。

2024-12-02 15:22:18 273

原创 Ublox多连接

Ublox ANNA-B112 多连接

2024-11-19 13:46:54 260

原创 STM32F4 CANopen firmware download -- Application

本篇是STM32F4 CANopen firmware download 系列的第三篇, 主要解释如何给application插入image header文件。处理hex文件的方式和bootloader里相同,也是在python脚本里使用 srec_cat工具。

2024-08-21 11:30:51 506

原创 STM32F4 CANopen firmware download -- Bootloader

CANOPEN 升级固件, hex文件加入image信息。

2024-08-21 09:07:44 1155

原创 STM32F4 CANopen firmware download

STM32F4通过 CANOPEN 下载固件,CANOPEN 节点由bootloader 和 application组成。

2024-08-19 14:02:48 536 1

原创 STM32F429IG SPI FLASH download algorithm

STM32F429IG SPI FLASH download algorithm。

2024-01-15 14:06:27 207

原创 STM32 FLASH error: FLASH_FLAG_PGPERR & FLASH_FLAG_PGSERR

在STM32F429 上用FLASH 模拟 EEPROM,工程是STM32CubeIDE里面创建和生成的。调试时发现第一次写FLASH时总是出错,第二次及之后再写FLASH则没问题。

2023-04-14 13:11:00 5709 5

原创 STM32 DFU Mode

STM32

2022-11-29 11:06:28 354

原创 把驱动编译进内核

驱动路径通常,linux kernel的驱动文件都放在 drivers/ 里面,根据不同驱动类型放置在不同文件里, 如字符设备驱动 放置在 drivers/char/ 文件夹下。这里,自己创建一个文件夹 para_drv,用来放自己的驱动文件, 具体文件构成如: drivers/para_drv/Makefile drivers/para_drv/Kconfig drivers/para_drv/dtsled/para_dtsled.c drivers/para_drv/dtsl.

2021-12-10 15:33:30 734

原创 ssh 登陆时,报Permission denied (publickey)

网上关于ssh登陆时报Permission denied (publickey)的解决方式有很多,有文件权限问题等,但亲测都无效。以下是我遇到这个问题的解决过程:公私钥是否匹配:通过私钥打印出公钥,并于本地公钥对比#通过私钥打印出公钥ssh-keygen -y -e -f <your-private-key>2. 查看ssh server user(即需要ssh 登陆的 remote host)里的 authorized_keys是否包含上面的pub keycat /home

2021-10-12 14:06:25 5119

原创 systemd 的定时任务

@[TOC](测试脚本设置自己的service设置自己的timer验证timer)前提:想要使用 systemd 的timer 功能,你必须要有几个要件:系统的timer.target 一定要启动要有个sname.service 的服务存在(sname 是你自己指定的名称)要有个sname.timer 的时间启动服务存在测试脚本remove-log.sh#!/bin/bashdate >> /home/xx/remove-logecho "run remo

2021-07-06 12:20:15 678

原创 树莓派中安装docker,并构建自己的镜像

1. 前言最近需要在I.MX6+ubuntu18上运行.net程序,但一直不成功,所以打算在ubuntu中安装docker,在docker中运行。先拿树莓派练手。2. docker的安装这个网上比较多,主要参考菜鸟(https://www.runoob.com/docker/ubuntu-docker-install.html)和docker的官方文档(https://docs.docker.com/engine/install/ubuntu/),有一点需要注意的是,在手动安装时,执行到“***通过

2021-03-05 14:13:44 1154 1

原创 C#RS485通信

C#实现485通信1. 功能心跳检测:心跳1s发一次,上电后一段时间内不检测心跳,此后,每3s检测一次是否收到心跳,若3s内一次都没有收到心跳,认为网络故障。500ms内没收到ack,或者ack包的数据域里有错误代码,重发,重发超过3次,仍没有收到ack, 认为网络故障。两帧间隔10ms:每次发送报文前,延时10ms再发送。若网络故障,则关闭串口通信。2. 设计到的C#知识点串口通信:引用类RJCP.IO.Ports定时器: 引用类System.Timers进程间通信:event

2021-02-19 14:28:12 12797 6

原创 适配器模式(C语言) -- already done

一、介绍适配器模式(Adapter Pattern)是作为多个不兼容的模块之间的桥梁。它结合了多个模块的功能。因C语言没有类和继承等特性,所以本文只讨论接口适配器,至于类适配器和对象适配器不在本文讨论范围。例如,在需要解码的程序中,一个上位机(用户)需要跟解码器通信,但是解码器需要能解码不同通信协议的数据包。二、工作原理将一个模块的接口转换成另一种接口,转换后的接口可以兼容。调用者(用户)不需要知道各模块内部的实现,方便增减模块,可以解耦,方便移植三、适配器图解四、代码示例common.

2020-11-10 09:58:02 669

原创 STM32笔记:TIM

stm32 定时器常用寄存器:1.1 自动重装载寄存器(TIMX_ARR):自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。1.2 预分频器( TIMX_PSC):这个控制寄存器带有缓冲器,它能够在工作时..

2020-10-12 15:33:58 1833

原创 C语言之面向对象

C语言之面向对象_网关概述嵌入式设备与外界通信大多是串口,若想通过以太网、WIFI、BLE等通信,则需要外接对应的模块来实现,但每种通信方式对应的网络协议却不相同,为了实现代码复用及减少模块间的耦合,借用面向对象的方式: 只关注通信的属性:接收,处理,发送; 至于具体的通信行为,则由每个通信协议内部实现。将上述分为两个模块:通信的属性–> 协议解析器; 具体通信行为–> 命令解析器模块解析2.1 协议解析器2.1.1 数据结构 struct ProtocolInte

2020-09-01 12:18:11 724

原创 STM32F429的bootloader跳转到APP时跳转失败,无法进入APP

遇到的问题:1.原有的工程,可以正常从bootloader 跳转到APP,但是在修改了APP里一个结构体后,bootloader无法正常跳转到APP。结构体修改前:typedef struct{uint32_t drugItems[1000];} TS_DRUG_ITEMS_COLLECTION;struct TS_DRUG_CATEGORY{uint32_t category_index;TE_STR_ID default_name_id;uint32_t drug_item_cou

2020-05-28 13:06:59 6844 1

原创 用stmCubeMx创建的stm32f429工程,重写printf

利用stm32CubeMx创建stm32f429的工程,开发环境为IAR。1.初始化串口void MX_USART6_UART_Init(void){/* USER CODE BEGIN USART6_Init 0 *//* USER CODE END USART6_Init 0 *//* USER CODE BEGIN USART6_Init 1 *//* USER CODE...

2020-04-20 09:28:52 604

原创 python爬虫实现翻译程序

主要内容:利用python的requests.post作为工具,爬取有道词典的翻译内容

2020-02-15 10:32:40 444

原创 Windows下使用pip 安装库时报 [WinError 5]

在windows 的terminal 使用 pip install xlrd 报错:(ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: ‘c:\program files\python38\Lib\site-packages\xlrd’Consider usin...

2020-01-14 10:30:51 313

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除