自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

六个九十度

嵌入式软件开发的一些经验

  • 博客(207)
  • 资源 (2)
  • 收藏
  • 关注

原创 基于GT911触控IC的电容屏在MSP430上的驱动

GT911的COOR_ADDR寄存器只要读了,就一定要写0清零,切记。

2024-03-16 11:45:35 755

原创 STM32作为SPI slave与主机异步通信

slave开机后处于SPI接收主机command状态,收到用户输入后abort当前的接收,进入SPI发送状态,发送完毕后,恢复接收command状态。

2024-03-02 16:57:20 1080

原创 TI的电量计驱动在卸载时导致Linux卡死

TI工程师对devm前缀打头的函数的使用有问题

2024-02-07 17:43:18 416

原创 将TI的电量计Linux驱动从4.4内核移植到5.10

在理解Linux和厂商代码的前提下,将报错的宏找到等价替代,或直接删除。

2024-01-20 11:55:07 456 7

原创 增量式旋转编码器在STM32平台上的应用

将编码器输出的两路信号的其中一路当作触发器,检测另一路的电平高低,从而确定旋转方向。

2023-12-23 17:55:56 739

原创 STM32 HAL库函数HAL_SPI_Receive_IT和HAL_SPI_Receive的区别

带IT后缀的版本只开启中断,实际的接收在中断回调里完成。

2023-11-18 17:23:58 2050

原创 从Linux的tty_struct指针获取驱动上下文

ctx = container_of(tty->port, struct gpib_tty_ctx, port);

2023-10-21 12:05:02 518

原创 在linux下预览markdown的方法,转换成html和pdf

使用pandoc转换成html和pdf,再用firefox和evince预览

2023-09-28 10:03:09 2181

原创 使用sed批量修改跨多行的配置文件

让sed的起始行和终止行均通过模式串指定

2023-08-04 14:43:49 422

原创 用wget等命令行工具下载Jenkins上的文件

Jenkins有官方的脚本接口,正确使用即可。

2023-06-20 11:44:57 993

原创 有符号定点小数的31bit问题

有符号定点小数从内存表示转换成浮点数时,注意溢出问题。

2023-05-24 11:00:00 384

原创 巧用bash的eval命令解析配置文件

eval命令特别适合key=value这种格式的配置文件的解析,可以直接将value赋值给环境变量key

2023-05-22 10:23:31 513

原创 将ISP DMA写到DDR的数据unpack成可被7yuv预览的RAW图

ISP DMA的特点是一端字节对齐访问,一端流式访问,且净荷数据不一定是8bit的整数倍

2023-04-21 10:19:07 526

原创 查看从ISP pipeline导出的RAW数据

关键是弄明白ISP pipeline的DMA的工作原理

2023-03-25 11:08:44 711

转载 【转贴+排版】测度论简介——一个通往异世界的大门

加法不能定义在不可数无穷集合上

2023-03-08 10:56:18 1050 1

原创 分析C语言位域的访问开销

访问位域有开销,这包括移位、截断等操作,但考虑到内存局部性原理,这些操作都不影响cache,因此性能并不会差多少。

2023-02-15 09:17:33 297

原创 巧用gitbash的scp命令实现跨网段的文件直传

scp user@服务器:/a.out root@开发板:/a.out

2023-01-12 10:03:37 838

原创 C语言的预处理器无法先展开宏再拼接符号?可以!

拆分成2个宏定义!

2022-12-13 09:58:05 373

原创 gcc对void型指针的类型检查有问题?

不要使用void **参数

2022-11-11 10:02:09 819

原创 原来函数入参类型不匹配gcc也能编译通过啊

入参类型不匹配可能会导致内存访问越界!

2022-10-13 19:47:47 394

原创 一个Kbuild工程生成多个ko文件及其在驱动单元测试上的应用

给obj-m变量追加模块名

2022-09-02 09:18:38 447

原创 使用枚举实现编译时可变长数组

枚举值是编译时可确定的,所以能用于定义数组长度。

2022-08-12 09:57:46 185

原创 浮点型数值强转成整型时,发生了什么?

当我们将值类型强转时,必定有对应的CPU指令实现,不要以为没有开销。

2022-07-05 15:29:32 2052

原创 不用鼠标将命令行的输出粘贴到GUI

使用各个平台专属的剪贴板命令行接口

2022-06-12 10:00:00 175

原创 对匿名联合体的一些理解

概念匿名联合体是一种语法糖,用于定义结构体内一类互斥的字段,但这些字段从语义层面上来说又是跟结构体内其他字段平级的。它跟匿名结构体的语法类似,但用处感觉比后者更大些。注意事项1. 可以定义多个匿名联合体,只要字段不重复即可,匿名结构体同理。2. 包含匿名联合体的`命名类型`不一定非得是struct,也可以是另一个union,代表`互斥`场景内的`子互斥`场景。

2022-04-16 10:54:23 881

原创 C语言宏的空展开应用案例:定义仅在debug版本执行的打印函数

使用函数宏,并根据配置展开成printf或空宏

2022-03-13 08:24:21 347

原创 全志科技面试题记录

全志是我遇到的第一家要求输出面试纪要的公司

2022-02-12 14:45:33 506

原创 sudo的-E选项不起作用怎么办?

sudo ENV_VAR1=value1 ENV_VAR2=value2 any_root_cmd

2022-01-13 11:19:06 1072

原创 移植QT程序到petalinux平台

petalinux不带GCC,无法在里面编译QT应用,本文选择在arm版ubuntu里编译,再部署到petalinux

2021-12-25 19:11:39 1918 2

原创 将USB转串口驱动pl2303从5.10内核向后移植(back port)到4.15内核

背景公司的USB转串口设备是绿联的,在windows上识别为[Prolific 旺玖科技](Prolific 旺玖科技股份有限公司)的pl2303系列,但是在ubuntu 1604.4(内核版本4.15)上无法驱动。运行lsusb能看到它的product id是0x23c3,浏览公司ftp上几个linux内核源码包,发现4.19也不支持该设备,支持的起码是5.x内核。失败的尝试:升级内核到5.10在1604上编译5.10内核,安装后启动失败。搜索资料得知ubuntu LTS版本包含2种内核,一种是

2021-11-20 08:24:15 661

原创 让运行ubuntu20.04的笔记本电脑实现关闭盖子自动休眠

背景每次关盖都不休眠,而是睡眠解决办法默认安装的ubuntu不添加swap分区,需要先resize2fs加fdisk缩小主分区,然后用fdisk将腾出来的空间划成swap分区再解决grub的问题:Oct 7 11:10:08 whp-Inspiron-5537 steam.desktop[4837]: LuaDbg - Debugging stoppedOct 7 11:10:08 whp-Inspiron-5537 steam.desktop[4837]: CSteam3Client::S

2021-10-10 10:34:49 1958 3

原创 ubuntu自动登录tty终端的最简方法

背景在嵌入式系统经常需要自动登录tty,以实现业务程序开机启动的效果。网上有篇文章ubuntu自动登录tty1(shell,text)配置转发挺多,但我弄明白原理后,觉得可以进一步简化,经测试,简化成功。自动登录原理修改/etc/init/tty1.confUbuntu默认的tty1.conf内容如下# tty1 - getty## This service maintains a getty on tty1 from the point the system is# started un

2021-09-28 17:34:59 4277

原创 获取Linux内核卡死前的日志

Linux侧开启rsyslog的UDP转发,Windows侧用Visual Syslog Server for Windows查看

2021-09-10 18:16:30 6037

原创 将sudo命令自动化执行

背景在嵌入式开发环境,我们经常需要执行一些特权指令,但是每次执行执行都要手工输入密码(无法在命令行参数里直接传递密码),如果能将这些操作自动化就好了。解决办法,使用expect程序expect命令是一个能自动化执行sudo等交互式命令的程序。安装嵌入式设备一般不能连外网,所以需要离线安装,expect包依赖tcl-expect包,所以需要一起下载一起安装apt-get download tcl-expectapt-get download expectscp tcl-expect_5.45-

2021-09-07 11:33:31 578

原创 用bash分割字符串

背景最近负责移植固件升级功能,发现原来的升级脚本将固件的路径名和文件名不做区分,导致脚本必须跟固件在同一路径下才能正确调用,殊为不便。上代码:sudo mkdir -p /lib/firmware/F260/sudo cp $1 /lib/firmware/F260/echo Updating $2 ...echo F260/$1 > /sys/class/misc/PCIE_SubFpga1/d_${2}_update脚本命令行第一个参数$1就是固件的路径名,$2是器件名(表明FPG

2021-09-02 14:44:12 1551

原创 查看浮点数的内部存储格式

浮点数所有浮点数的内部存储格式都遵照IEEE 754标准。如果想验证一下自己的电脑是否真的如此,就需要查看浮点数在内存中的表示,而这里存在一个强制类型转换的注意事项:不要直接强转浮点数,而是强转浮点数的内存地址因为强转浮点数对应的编译器操作是向下取整!验证代码#include<stdio.h>int main(){ float a; printf("enter a float:"); scanf("%f", &a); printf("%x

2021-08-31 11:52:57 300

原创 USBTMC设备端驱动的一些开发心得

背景最近2个多月主要在忙USBTMC设备端驱动的重构,原来的驱动是参考gtzhai的github工程linux-driver-usbtmc-gadget,然后根据公司需求做了一堆单片机风格的魔改,可读性惨不忍睹,BUG不多但都很棘手,于是决定重构。重构后所有BUG都解决了,没解决的也知道为啥不能解决。为了对自己这段时间死掉的脑细胞聊表纪念(压力也有点大),决定将心得分享一下。重构思路首先让驱动能实现建链版本的驱动充斥着关中断操作,这使得设备不出错则已,一出错就是整机卡死的严重故障。于是我首先将所有

2021-08-23 14:52:12 3023 5

原创 让Linux下位机跟Windows上位机自动时间同步

需求来源嵌入式系统通常分上位机和下位机,如果二者的日志时间戳能一致,则对定位问题价值巨大。另外有些原型系统的RTC时钟没装电池,更需要从外部获取真实时间,否则每次开机都是1970年1月1号。如果能够让下位机每次开机都跟上位机对一次时,即同步一下时间,则可满足上述需求,那么怎么对时呢?解决方案:NTPNTP又叫网络时间协议,是一种用于时间同步的网络协议。配置Windows为NTP服务器Linux和Windows都有NTP客户端,但是Windows作为上位机,必须还得具备NTP服务器的能力,幸好,

2021-07-19 16:31:06 1390 1

原创 Linux内核函数wait_event_interruptible的condition参数踩坑

wait_event简介wait_event_interruptible(以及wait_event打头的其他变体)是Linux的wait queue机制提供的线程同步接口,它的定义如下#define wait_event_interruptible(wq, condition) \({ \ int __ret = 0; \ might_sleep(

2021-07-06 11:55:28 1363

原创 一种让Linux窗口应用运行在全屏模式的简单粗暴方法

导航思路操作步骤禁用默认DM(Display Manger)创建自己的startx脚本让自己的startx脚本开机启动重启总结思路在嵌入式Linux系统里,整机一般只运行一个应用,并且是开机自启动,所以用不上Display Manager,可以直接替换成应用。替换后,就没有窗口系统了,应用也就不会带上窗口系统的标题栏、关闭按钮等,实现被动全屏。操作步骤在Ubuntu 1604上验证通过,其他环境大同小异禁用默认DM(Display Manger)修改/etc/X11/default-displ

2021-06-18 11:52:57 3362 3

基于GT911触控IC的电容屏在MSP430上的驱动

基于GT911触控IC的电容屏在MSP430上的驱动

2024-03-16

在linux下预览markdown的方法,转换成html和pdf

在linux下预览markdown的方法,转换成html和pdf

2023-09-28

空空如也

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

TA关注的人

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