嵌入式
文章平均质量分 89
Quard_D
嵌入式爱好者,对嵌入式linux、RTOS、裸机均颇有研究,目前最感兴趣的是RISC-V相关。
展开
-
嵌入式开发实用工具——QFSViewer
今天给大家推荐个我个人业余时间开发的一个嵌入式开发实用工具——QFSViewer,这个工具主要是用来加载查看各种嵌入式常用的文件系统映像,目前支持JFSS2、Fat32、Fat16、Fat12、exFat、Ext2、Ext3、Ext4等文件系统。QFSViewer不同于很多工具需要将文件系统映像文件通过loopback设备挂载到系统中,而是直接加载文件系统映像文件,全程通过用户态软件解析文件系统,因此不需要root权限,也不需要挂载到系统中。原创 2023-08-08 22:43:53 · 400 阅读 · 0 评论 -
嵌入式Linux上ifpulgd的使用配置与qemu模拟验证
最近在项目开发中收到了一个非常简单的需求,我们的嵌入式Linux板卡需要在检测到网口插拔后重新配置网络,这在pc环境中非常常见。但是在这个项目的默认SDK中并没有相关配置,稍微查询了一下,在一般pc上通常使用Ifpulgd,并且在较新的busybox中已经提供了这个实用程序,而我们使用的旧版并未提供,因此我这里记录下使用和配置过程并且在qemu中进行了模拟验证。ifpulgd非常简单,下载最新的 busybox源码,编译生成的 ifpulgd位于/usr/sbin中。busybox并沒有提供示例说明,这里我原创 2022-12-04 01:55:18 · 1037 阅读 · 1 评论 -
QEMU CAN总线
在我的之前的博客中我介绍的一些常用的qemu参数配置,而对于嵌入式开发往往还会涉及到更多形形色色的系统总线和硬件,本文来讲述下使用qemu can总线的用法。原创 2022-08-05 11:49:44 · 1184 阅读 · 3 评论 -
使用qemu的gdbstub调试
在之前我的一篇博客——《kgdb调试linux内核以及驱动模块》中简要描述如何配置kgdb进行内核以及驱动模块调试,这种方法既适用于qemu仿真环境也适用于真实的物理开发板,但对于做早期cpu core bridge up时未必能在物理设备上搭建好稳定可靠的kgdb环境。一般来讲使用qemu仿真来发现一些早期软件问题是有一定的帮助的,因此本文将描述,借助qemu的gdbsever模式,在仿真环境上更早的介入gdb工具进行非常底层的debug。本文实验环境依然为qemu搭建的riscv64模拟器环境,笔者之前原创 2022-07-13 17:06:12 · 728 阅读 · 0 评论 -
qemu常用参数选项说明
qemu常用参数选项说明在我的系列博客《基于qemu-riscv从0开始构建嵌入式linux系统》中使用qemu项目一步步构造搭建了嵌入式linux系统,而其中在run.sh中qemu的启动参数选项非常多且繁杂,因此本文将对其进行归纳整理。设备类型(-machine/-M)在qemu中,不同的指令集的模拟器会编译成不同的可执行文件,诸如:qemu-system-x86_64/qemu-system-aarch64/qemu-system-arm/qemu-system-mips/qemu-system原创 2022-03-03 12:04:08 · 23103 阅读 · 12 评论 -
gcc编译选项-pg在嵌入式profile中应用
gcc编译选项pg在嵌入式profile中应用问题引入首先说明下,本文主要是描述下使用gcc的-pg编译选项在嵌入式的裸机或RTOS系统环境下实现一些函数级别的profile或者做代码覆盖率测试甚至实现trace功能。关于这个编译选项在GCC文档有描述,但是这里要注意一点,该选项一般来讲是配合glibc中的gprof实现完备且较为复杂的性能跟踪,而众所周知在MCU级别的嵌入式开发环境往往没有操作系统加持,仅有RTOS甚至是裸机环境,因此本文提出一种简易的可以在裸机环境实现简单但有效的trace实现思路。原创 2021-09-21 18:12:19 · 1323 阅读 · 3 评论 -
kgdb调试linux内核以及驱动模块
kgdb调试linux内核以及驱动模块本文将简要描述如何配置kgdb进行内核以及驱动模块调试,以嵌入式开发为例,但同样对于其他有需要调试kernel有一定的参考价值。本文实验环境为qemu搭建的riscv64模拟器环境,笔者之前有系列博客详细描述了环境搭建,可供参考——《基于qemu-riscv从0开始构建嵌入式linux系统》。修改内核配置在linux 5.10版本上,KGDB已经受支持,因此仅需要修改内核配置就可以打开此功能。CONFIG_KGDB配置CONFIG_KGDB=y,以启用kgdb原创 2021-09-15 17:51:50 · 7758 阅读 · 5 评论 -
某些版本gcc使用-flto选项编译生成的静态库无法正常被链接的问题解决
问题引入最近在使用某个版本的交叉编译工具链gcc时发现一个问题,示例如下:首先创建一个lto.c文件,内容如下:int issue_func(int a0, int a1){ return a0+a1;}创建main.cextern int issue_func(int a0, int a1);int main(){ return issue_func(5,6);}然后按照如下方式编译代码riscv-nuclei-elf-gcc -flto -o lto.o -原创 2021-04-10 20:06:32 · 5723 阅读 · 1 评论 -
IAR中Overlay和manual initialization的使用技巧
需求导入经常做嵌入式开发的同学们肯定熟悉Keil MDK和IAR这两个IDE,在相对简单的MCU开发中非常常见,而还有些同学可能经常进行嵌入式Linux上的开发,那么GCC则更为熟悉。因为个人工作学习需求,我主要使用的开发工具链是GCC和IAR。最近收到了有这么需求:我们使用的某一代芯片(MCU级别)上,大多数代码段均通过BootLoader搬运到SRAM中运行,但也可以将一部分代码放置在flash中直接运行,那么在flash中的代码映射到系统map的基地址为0x1fbb0000,因此我们需要指定一个特原创 2020-12-23 10:34:25 · 1143 阅读 · 0 评论 -
lvgl7.0移植使用说明
lvgl7.0移植使用说明LVGL移植是比较容易的,在源码的porting目录中有以下几个文件:disp文件是显示相关的移植文件,indev是输入设备的相关移植文件,其中输入设备包括触控,鼠标,键盘等。fs是文件系统相关的移植文件,主要是保存一些图像资源在文件系统中。lv_port_disp调用lv_disp_buf_init定义1个或2个用于图像计算的缓存buff,最小为显示像素宽度单个像素大小,推荐定义为20x显示像素宽度单个像素大小的buff两个,当然如果内存足够可以定义更多的buff会有原创 2020-10-23 13:47:03 · 6955 阅读 · 0 评论 -
使用Qt Creator远程调试部署应用到嵌入式linux开发板
使用Qt Creator远程调试部署应用到嵌入式linux开发板最近在调试开发一款Cottex-A5的开发板上的应用,主要使用了Qt作为GUI开发应用,之前用Yocto搭建好系统发行版和主机交叉编译开发环境后,使用Qt Creator加载交叉编译好的的Qt SDK包,一般完成编译后生成可执行程序然后拷贝到开发板文件系统内执行,若需要调试还得在开发板上使用gdbserver启动调试服务然后主机连接调试,过程操作较麻烦。因此这里可以使用Qt Creator提供的远程部署调试,操作如下:配置远程设备点击工具原创 2020-08-23 21:39:09 · 4766 阅读 · 2 评论 -
MCU平台libjpeg9移植使用说明
MCU平台libjpeg9移植使用说明随着MCU平台的性能越来越强大,在MCU上使用jpeg软解码也成为可能,本文就将libjpeg移植做以说明。libjpeg 是一个广泛使用的 JPEG 图像压缩/解压开源库,采用 C 语言开发。因此可以方便的移植到各种平台上。可以在这样下载源码 http://www.ijg.org/files/这里我们使用最新的libjpeg9版本,早先的libjpeg6版本中仅提供的接口都是从文件读取源数据,而我们希望的是从内存中输入源数据,在libjpeg9版本中新增了jpe原创 2020-06-21 17:48:24 · 2570 阅读 · 0 评论 -
关于cortex-m内核非对齐访问0x1fffffff出错问题
关于cortex-m内核非对齐访问0x1fffffff出错问题1.问题发现通常在类似STM32这种MCU平台开发程序时,因为内存资源有限, 在遇到一些结构体的size不对齐到4字节时,编译器会强制4字节对齐,从而浪费了内存空间,因此常常会有对结构体使用__packed的语法来强制修改对齐方式,这种优化方式可以使非4字节对齐size的结构体占用更小的ram空间,但会导致结构体数据存放地址为非4字节对齐的地址,譬如:0x1FFB0001开始处的1个word为一个32位的数据或指针。在这个背景下有时候会产生原创 2020-06-21 13:35:32 · 1356 阅读 · 0 评论 -
cortex-m未声明函数导致定点浮点abi混淆出错
cortex-m未声明函数导致定点浮点abi混淆出错问题引入开发环境:iar,平台cortex-m4,调用第三方lib里的接口但不声明函数,编译成功,但是程序运行出错。针对该问题跟踪发现这是个abi调用规则的问题。给出一个简单的例子和相关解释。示例如下:在a.c文件定义如下函数void test(float a, float b, float c, float d){ mprintf("%f %f %f %f",a,b,c,d); mprintf("%f %f %f %f",a,原创 2020-06-21 13:33:00 · 259 阅读 · 0 评论 -
GD32VF103移植SVSTEMVIEW
文章目录GD32VF103移植SVSTEMVIEWSystemView移植源文件加入工程修改freertos源码添加串口移植修改systemview配置完成移植GD32VF103移植SVSTEMVIEW最近兆易推出了基于RISCV的MCU-GD32VF103,得到了一个GD32VF103C-START 学习板,以前只用过arm内核mcu,从没用过RISCV内核,打算玩一下这块板子。这次打算移植...原创 2020-03-06 22:35:08 · 1768 阅读 · 0 评论 -
树莓派装机笔记
树莓派装机笔记1. 烧写系统2. 打开配置sudo raspi-config其中选择Expand Filesystem扩展文件系统、Overscan让屏幕内容全屏显示、Change Keyboard Layout改变键盘布局为英语(美国)3. 安装中文字体sudo apt-getupdatesudo apt-get install ttf-wqy原创 2017-12-12 11:28:17 · 448 阅读 · 0 评论 -
修改keil5工程名称
1.删除编译产生文件;2.Project文件夹下重命名.uxoptx和.uvprojx两个文件为修改后的工程名称,并删除其他有原工程名称的文件;3.清空Listings和Objects文件夹带有原工程名字的文件;4.打开工程文件在魔法棒——Output——Name of Executable中修改工程名称;5.重新编译工程即可完成修改。原创 2017-12-12 11:29:47 · 11314 阅读 · 0 评论 -
在STM32f103c8移植Huawei LiteOS笔记
f103c8移植 基于f103ze的移植文件。 修改前 修改后1.修改魔法棒——Device——芯片选择STM32F103ZE原创 2017-12-12 11:33:21 · 3249 阅读 · 3 评论 -
在Keil5中配置使用GCC编译器开发STM32
Keil一般使用ARMCC编译MCU工程代码。偶然听说Keil也是支持内嵌GCC编译器的。于是尝试了网上博客所述的一些方法,最终找到了一篇博客 http://blog.csdn.net/lan120576664/article/details/46806991按照文中所述,发现仍存在一些其他错误,后来又查找了其他相关资料,在这作以总结一、下载GCC编译器https://launchpad.ne原创 2017-12-21 00:09:20 · 20117 阅读 · 5 评论 -
IAR参数变量(从IAR的帮助文件里翻译的)
IAR参数变量您可以为路径和参数使用参数变量,例如,当您在选项对话框中指定include路径时,或者当需要基于当前上下文的类似宏的扩展时,例如在工具的参数中。您可以使用广泛的预定义参数变量以及创建自己的参数变量,请参见配置自定义参数变量对话框。这些是预定义的参数变量: 变量 描述 $COMPILER_ARGS$ 除了在编译使用编译器时使用的文件名之外,所有编译 $CONFIG_NA翻译 2017-12-19 16:38:22 · 1388 阅读 · 0 评论 -
Helix MP3 解码器在cortex m4应用
Helix MP3 解码器在cortex m4应用Helix MP3 解码器可浮点和定点实现。该算法可运行在任意 32 位定点处理器上,并完全使用 C 语言编码,可选择用优化的汇编指令替换某些代码段。 Helix MP3 解码器提供对 MPEG-1、 MPEG-2 和 MPEG-2.5的第 3 层 (Layer 3)支持。它支持可变位速率、恒定位速率,以及立体声和单声道音频格式。下图是一...原创 2018-02-16 16:09:00 · 4676 阅读 · 0 评论 -
STM32+ESP8266获取天气
STM32+ESP8266获取天气最近在做一个天气小闹钟,采用STM32+ESP8266的方案获取天气。1.搭建环境stm32的esp8266驱动网上有许多,做开发板的一般都有配套,这里不在赘述,我们直接拿一个wifi透传的历程进行修改2.天气接口网上搜索天气API接口可以找到很多,有不少需要注册然后会获得一些免费的次数,这里我们希望可以找到完全免费不限次数的接口,经过查找找到...原创 2018-06-01 17:50:51 · 10269 阅读 · 4 评论 -
sw4stm32开发stm32
sw4stm32开发stm32作为开发stm32最常用的IDE就是MDK和IAR,然后这两款IDE是付费的,同时仅仅能在windows平台上使用,为了能打破这一限制有些人使用了Eclipse+gcc搭建了stm32的开发环境,其过程较为复杂。现在st官方推出了官方的一款免费IDE——sw4stm32,同样也是基于Eclipse,下面就来讲一下下载安装过程已经配置stlink和jlink仿真器。...原创 2018-06-10 16:08:00 · 19013 阅读 · 1 评论 -
GDB图形界面GUI调试器insight编译使用
0.引言linux环境上做嵌入式开发经常需要使用GDB,对于习惯用win上的gui的ide来说,刚上手不习惯,这里尝试一款GDB的前端GUI工具——insight,使用简单方便,但是它在常用发行版上没有编译好的包,只能自己源码编译安装,这里做以记录。我在刚开始编译时看了一些博客,在处理编译错误的地方很多都修改了源码,导致后续使用可能存在问题,所以我这里并不修改任何源码直接编译成功,目前使用起来暂...原创 2019-03-10 15:17:06 · 3298 阅读 · 2 评论 -
KEIL项目迁移IAR向导(中文)
项目迁移向导从Keil µVision® forARM平台转为 IAR Embedded Workbench® for ARM平台本文使用的项目例程所采用的IDE版本如下: IDE版本号工程转换前Keil µVision IDE V5.x工程转换后IAR Embedd翻译 2017-12-12 11:20:00 · 9848 阅读 · 0 评论