jjzjj

单片机(STM32,GD32,NXP等)中BootLoader的严谨实现详解

Bootloader(引导加载程序)的主要任务是引导加载并运行应用程序,我们的软件升级逻辑也一般在BootLoader中实现。本文将详细介绍BootLoader在单片机中的实现,包括STM32、GD32、NXPKinetis等等的所有单片机,因为无论是什么样的芯片,它实现的逻辑都是一样的。注意,本篇文章主要是介绍实现一个严谨的BootLoader需要掌握的基本知识和需要考虑的细节,如果不注意一些细节,应用层的代码很可能会受到影响。对于Linux的BootLoader来说其实也是一样的,但它还需要初始化MMU、引导内核等等,这里我们不做过多的讨论。文章目录1基础知识1.1NORFlash和NAN

GD MCU各系列产品替代方法和产品推荐

一、产品替代关注点:芯片架构:不同的MCU可能采用不同的架构,例如AVR、ARM、PIC等。当替换MCU时,确保选择一个具有相似或兼容的架构,以便在代码移植过程中减少工作量。这样可以更容易地复用现有的代码和资源。寄存器地址:MCU的寄存器用于控制和配置各种硬件功能。不同的MCU可能具有不同的寄存器地址映射。因此,在替换MCU时,需要检查新MCU的寄存器手册,了解其寄存器地址是否与旧MCU相同或类似。如果地址不同,就需要对代码进行适当的修改。功能和规格:确保新MCU能够满足原始MCU的功能和技术要求。比较关键的参数包括处理器速度、内存容量、IO口数量和类型等。外设和接口:检查新MCU是否提供了与

使用GD32F470标准HID例程修改为标准键盘

一、需求    初次学习USB相关知识,可以从简单的开始。手上有一块兆易创新的GD32开发板,熟悉USB的知识。    现在手上有开发板带的关于HID标准程序,该程序已经实现的功能是开发板USB作为设备,按开发板上不同的键,在PC机上显示字符:也就是模拟键盘。但是只有输入端点1上报键值的功能,没有PC机下发LED控制的功能,所以试着加一下。                           图1GD32厂家自带的USB文档说明二、代码修改    打开开发板自带的标准HID程序:HID-Keyboard工程;    当前程序使用IN1来上传HID报表描述符,有为IN1分配的数据缓冲区data(

RT-Thread GD32F4xx CAN驱动

1、编写CAN驱动  在RT-Thread的bsp文档中没有找到GD32F4xx的CAN驱动文件,此处参考STM32的drv_can编写CAN驱动。1.1创建CAN设备1.1.1CAN设备结构体structgd32_baudrate_tab{rt_uint32_tbaudrate; //波特率rt_uint8_tsjw; //配置参数rt_uint8_tbs1; rt_uint8_tbs2; rt_uint16_tprescaler;

关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus,实现modbus tcp

关于STM32F4和GD32F4以太网,LAN8720+lwip+freemodbus这里使用了大佬小灰灰搞电子的代码,文章看STM32F407+LAN8720移植Lwip和freeModbus实现MODBUSTCP代码看STM32F407+LAN8720+LWIP移植freemodbusTCP.zip他的代码是基于正点原子F407的板子开发的,如果是别的板子,需要修改引脚小灰灰的代码里,没有对02功能码的处理函数进行完善,在port.c中,修改eMBRegDiscreteCB函数如下:/*****************************************************

GD32移植STM32工程(因为懒,所以移植)

文章目录一、前言二、差异性三、软件移植部分1.前期准备1.1安装GD32固件库1.2选择所用芯片2.修改程序2.1启动时间(内部时钟可不改)2.2主频2.2.1系统时钟配置2.2.2108MHz宏定义第一处第二处第三处第四处第五处2.2.3串口2.2.4FLASH四、总结一、前言在一个慵懒的日子里,我因为不想花费太多时间和精力,直接将原来为STM32编写的工程进行了修改,使其适用于GD32工程。这个过程并不复杂,只需要对一些特定的代码进行替换和调整,以适应GD32的硬件架构和指令集。然而,由于我对STM32和GD32之间的差异了解不够深入,这个过程也让我犯了一些错误。最终,经过一番努力,我终于

php - 在 alpine 中安装 php7-gd

这是我的DockerfileFROMphp:7.1-fpm-alpineRUNdocker-php-ext-installmysqliRUNecho"http://dl-4.alpinelinux.org/alpine/edge/community/">>/etc/apk/repositories&&apkupdate&&\apkupgrade&&\apkadd--update\php7-gdmysqli可以,但它不加载GD库。我在alpine容器中也找到了gd.so,请看图:请帮忙 最佳答案 您不应混合使用AlpineLinux3

php - 如何在 Ubuntu 中安装 PHP GD

我想用GD转换低分辨率的图像。我在这些规范下的IBM服务器上工作版本:PHP7.0.15-0ubuntu0.16.04.4(cli)(NTS)而且我还注释掉了php.ini的扩展名,但无法在php服务器上启用GD。我刚收到这个错误。运行命令:sudoapt-getinstalllibgd正在读取包列表...完成构建依赖树正在读取状态信息...完成E:无法定位软件包libgd第二个命令当我运行时给出这条消息:1)包有未满足的依赖运行此命令后收到此信息:命令:sudoapt-getinstalllibgd-dev正在读取包列表...完成构建依赖树正在读取状态信息...完成您可能需要运行“a

php - 为什么这个透明的 PNG 在使用 GD 组合时会产生边框?

我正在尝试使用PHP从另一个图像创建一个图像。这是我的代码:所以我在$source_under中加载这张图片并将其复制到透明的空白“Canvas”图像上。这是该操作的结果:可以看出,整个初始图像周围有一种黑色边框。我认为这是因为最初“Canvas”图像是全黑的。所以图片的透明度和抗锯齿有问题。这不是我第一次遇到类似问题,但上次是源图像的原因。这一次,在Photoshop中打开它不会显示任何潜在问题。有人知道如何解决这个问题吗? 最佳答案 在将原件复制到$image之前,您能否尝试在$image上启用alpha混合:imagealph

php - PHP GD 库中不支持 PNG,但支持 GIF 和 JPEG。我怎样才能解决这个问题?

我在OSXYosemite上运行MAMP服务器版本3.0.5。在执行过程中,我的php文件似乎缺少PNG支持甚至在我使用MAMP2.1之前,它在png相关函数上就存在fatalerror。不过Jpeg函数工作正常。这是我的phpinfo的样子:BuildDateApr10201417:21:18ConfigureCommand'./configure''--with-mysql=/Applications/MAMP/Library''--with-apxs2=/Applications/MAMP/Library/bin/apxs''--with-gd''--with-jpeg-dir=