- 博客(443)
- 资源 (13)
- 收藏
- 关注
原创 ARM 寄存器
Cortex A 系列的 ARM 处理器共有 40 个 32 位寄存器,其中 33 个为通用寄存器,7 个为状态寄存器。用户模式和系统模式共用同一组寄存器。
2024-01-11 21:37:25
1725
1
原创 USB2.0 Spec
A device that has multiple interfaces controlled independently of each other is referred to as a composite device.
2023-12-18 22:45:00
1006
原创 USB2.0 Spec 中文篇
一个设备可能有一个或多个接口。(复合设备具有多个接口,驱动中,是只认接口,不认设备的,一个驱动程序对应一个接口。一个包含两个接口的复合设备,如电子琴,包含键盘接口和扬声器接口,那么就会有两个驱动与该设备对应,即键盘驱动和扬声器驱动)
2023-12-14 22:15:00
2227
原创 DHCP Host Name
udhcpc 命令使用 -x hostname:xxx 选项,可以在 DHCP Discover 报文中添加 option 12 选项,即 Host Name。
2023-12-05 23:37:16
1540
原创 genimage 打包镜像
用户准备好待打包的原料:uboot.bin、zImage、rootfs 等,然后编写一个配置文件 genimage.cfg,描述如何进行打包,然后运行 genimage -c genimage.cfg 就可以打包好一个镜像。
2023-11-29 23:15:00
1034
原创 /dev/root
/dev/root 曾经是 /dev/mmcblk0p2 的软链接,在使用这个软链接将该设备挂载到根目录后,又将该软链接删除了。
2023-11-27 01:42:38
1298
原创 uboot 和 内存地址
在 uboot 的 .config 和 Makefile 文件中,使用 CONFIG_SYS_TEXT_BASE 宏来指定代码的入口地址
2023-11-09 23:12:20
2416
原创 GCC 优化等级(O0、O1、O2、O3)对程序性能的影响
O3 直接将内层循环给优化掉了,10 次循环展开成 10 次指令,也是牛逼。这样一来,少了内层循环的边界判断。更重要的是,少一层跳转,就减少一次分支预测判断,这对指令执行的效率有显著提升。
2023-10-09 22:05:40
5118
原创 ARM Linux DIY(十四)摄像头捕获画面显示到屏幕
摄像头对应 /dev/video0,屏幕对应 /dev/fb0,所以我们只要写一个应用程序,读取 video0 写入到 fb0 就可以了。
2023-09-29 06:30:00
583
原创 ARM Linux DIY(十二)NES 游戏
我们 DIY 的板子具备屏幕、扬声器、USB Host(可以接游戏手柄),当然也要凑一凑热闹。
2023-09-13 23:15:34
1375
3
原创 ARM Linux DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小
Linux 吉祥物小企鹅已跃然屏上
2023-09-11 00:47:14
666
原创 ARM Linux DIY(十)LRADC 按键
有时 ARM SOC 需要三五个按键,这时候 LRADC 就是一个不错的选择,它使用一个引脚,就可以扩展几个到几十个按键。
2023-09-07 21:56:12
1167
原创 ARM Linux DIY(九)陀螺仪调试
一开始使用内核自带的 IIO 驱动,发现只能在 /sys/ 目录下读取相应的坐标值,读取 /dev/iio:device0 有问题,并且需要配置中断引脚才能编译通过。所以就不使用内核自带的驱动了。网上找了个 6050 的驱动。
2023-09-07 21:40:31
716
原创 ARM Linux DIY(八)USB 调试
USB 电路简单,只有两根线 D+、D-,器件也简单,就一个 USB 母座,甚至连电阻电容都不需要,其它外设如果也能像 USB 这样就好了。
2023-09-06 00:37:05
1566
原创 ARM Linux DIY(六)音频调试
对于 SOC 来讲很简单,就一个引脚 HPOUTL(单声道);对于扬声器来讲也很简单,就两个引脚,插上就可以了。另外一个关键点是电容和电阻要焊到位,有没有噪音,音质好坏,全屏电容电阻打下手。
2023-09-01 00:12:39
1101
1
原创 ARM Linux DIY(三)板载串口和 LCD 调试
发现上电后匹配的是 panel-sitronix-st7789v 这份驱动,那就禁用此启动,换下面的试试,结果还真可以,上电后屏幕直接就显示启动 log 了。
2023-08-23 23:21:56
1481
4
原创 ARM Linux DIY(二)配置晶振频率
板子上焊接的是 26MHz,设备树中配置的是 24000000,这样导致系统时钟不正确,最终产生的串口波特率不是 115200,所以乱码。
2023-08-20 15:05:40
1469
原创 树莓派使用 ENC28J60
一些老的、Mini 的 ARM 开发板上没有预留网口,这样在调试升级内核或应用程序时很不方便。纵使有串口下载工具,但其速度也是慢地捉急。这种情况下,使用其它接口来扩展出一个网口无疑是一个比较好的方法。ENC28J60 就是一个使用 SPI 接口来扩展网口的模块,今天我们就来演示下在树莓派上如何使用 ENC28J60。
2023-08-13 03:31:01
955
原创 per-cpu 变量
per-cpu 变量是 2.6 内核的一个有趣特性。当建立一个 per-cpu 变量时,系统中的每个处理器都会拥有该变量的特有副本。这看起来很奇怪,但它有其优点。对 per-cpu 变量的访问(几乎)不需要锁定,因为每个处理器在其自己的副本上工作。per-cpu 变量还可以保存在对应处理器的高速缓存中,这样,就可以在频繁更新时获得更好的性能。
2023-07-22 23:00:04
1051
原创 STM32 串口 DMA 接收任意长度数据
这里是转变了一个思路,单纯从 DMA 角度解决问题貌似找不到很好的答案,那就转换到串口上来。因为本身的工作是串口 DMA 接收任意长度数据。
2023-07-16 23:20:03
2553
原创 STM32 DMA 传输类型调试记录
源地址:(uint32_t)&huart->Instance->DR,即串口的数据寄存器目的地址:用户自定义的一个 buf数据长度:传送的数据长度
2023-07-14 02:52:57
1660
原创 CMA
CMA 全称叫做 continuous memory allocator,它是为了便于进行连续物理内存申请的一块区域,一般我们把这块区域定义为 reserved-memory。
2023-07-04 01:33:28
1251
原创 perf 工具测量 cache 命中率
今天我们使用 perf 工具,实际测量 cache miss 的比率是多少,这将会使你更加深刻地了解 cache 及其对性能的影响。
2023-06-22 20:28:01
3712
3
自己动手写一个操作系统-MBR(5)
2023-01-27
linux_cmd_test.exe
2021-01-10
MDIO之STM32源码
2020-05-08
Linux device driver中文版.pdf
2020-04-04
FX_serial_asst.rar
2020-01-10
OPCUA服务端客户端QT源码
2019-06-17
Android TCP_Client
2018-09-01
ioremap() 的逆函数是什么?
2023-08-01
无源晶振的振荡原理是什么?
2023-05-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅