自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lyndon

嵌入式软件工程师

  • 博客(413)
  • 资源 (13)
  • 收藏
  • 关注

原创 Linux kernel 墙上时间

果然,Linux 系统时间不走了。

2024-04-14 23:15:00 384

原创 性能优化——避免使用除法

ARM 硬件上不支持除法指令。编译器是通过调用 C 库函数来实现除法运算的,要花费 20~100 个周期。如果不能避免除法运算,那么就尽量使除数和被除数是无符号的整数。

2024-03-31 19:54:15 392

原创 字符设备驱动编写

每一个主设备号(major) 对应 /proc/devices 下的一个设备,使用 register_chrdev() 创建。每一个次设备号(minor) 对应 /dev/ 下的一个设备文件,使用 mknod 或 device_create() 创建。

2024-03-15 21:45:00 909

原创 gdb 调试记录

持续更新。。。

2024-03-05 22:34:49 392

原创 内核打印应用程序出错信息,DEBUG_USER

当用户程序由于异常而崩溃时,内核可以打印一条简短的消息来说明问题所在。这有时对调试很有帮助,但对生产系统没有任何作用。大多数人应该在这里说 N。此外,你需要在内核命令行上传递 user_debug=N 来启用此特性。

2024-02-29 22:32:54 759

原创 ASLR 和 PIE

ASLR 不负责代码段以及数据段的随机化工作,这项工作由 PIE 负责。但是只有在开启 ASLR 之后,PIE 才会生效。无论是 ASLR 还是 PIE,由于颗粒度问题,被随机化的都只是某个对象的起始地址,而在该对象的内部依然保持原来的结构,也就是说相对偏移是不会变的。

2024-02-26 21:43:45 669

原创 watchpoint

内存被踩,通过 watchpoint 找到真凶。

2024-02-22 21:57:10 392

原创 Kernel 地图

看内核代码,先看 Makefile 和 Kconfig。

2024-02-19 22:03:57 851

原创 PAGE_OFFSET

PAGE_OFFSET 的值支持通过 Kconfig 配置,其默认的值是 0xC0000000,即用户空间 3GB,内核空间 1GB。当然这个可以由我们动态配置,可以配置 PAGE_OFFSET 为 0x80000000,即用户空间和内核空间均为 2GB。

2024-01-31 23:15:00 325

原创 CPU 如何识别用户空间不同进程的虚拟地址

每个进程都有自己的页表。

2024-01-23 21:45:00 435

原创 内核调试 && 应用程序调试

内核调试和应用程序调试,底层都是使用 gdb,只不过受限于环境、系统等因素,使用了不同的辅助程序(设备)罢了。

2024-01-19 00:59:09 469

原创 x86 寄存器

8086 处理器内部有 8 个 16 位的通用寄存器,分别被命名为 AX、BX、CX、DX、SI、DI、BP、SP。

2024-01-17 22:15:00 793

原创 ARM 寄存器

Cortex A 系列的 ARM 处理器共有 40 个 32 位寄存器,其中 33 个为通用寄存器,7 个为状态寄存器。用户模式和系统模式共用同一组寄存器。

2024-01-11 21:37:25 1354 1

原创 pci_enable_device()

从协议中来,到协议中去。

2023-12-25 22:15:00 1127

原创 USB2.0 软件篇

形象点说,Spec 是理论基础,内核代码是具体实现,理论懂了,看代码就和看故事会差不多了。

2023-12-20 22:30:00 997

原创 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 959

原创 USB2.0 Spec 中文篇

一个设备可能有一个或多个接口。(复合设备具有多个接口,驱动中,是只认接口,不认设备的,一个驱动程序对应一个接口。一个包含两个接口的复合设备,如电子琴,包含键盘接口和扬声器接口,那么就会有两个驱动与该设备对应,即键盘驱动和扬声器驱动)

2023-12-14 22:15:00 1817

原创 DHCP Host Name

udhcpc 命令使用 -x hostname:xxx 选项,可以在 DHCP Discover 报文中添加 option 12 选项,即 Host Name。

2023-12-05 23:37:16 943

原创 genimage 打包镜像

用户准备好待打包的原料:uboot.bin、zImage、rootfs 等,然后编写一个配置文件 genimage.cfg,描述如何进行打包,然后运行 genimage -c genimage.cfg 就可以打包好一个镜像。

2023-11-29 23:15:00 643

原创 /dev/root

/dev/root 曾经是 /dev/mmcblk0p2 的软链接,在使用这个软链接将该设备挂载到根目录后,又将该软链接删除了。

2023-11-27 01:42:38 706

原创 uboot 添加命令

uboot 中有个 ping 命令,用来检查网络是否通畅。我们照着这个命令添加一个 ping2 命令。

2023-11-15 23:40:29 286

原创 uboot 和 内存地址

在 uboot 的 .config 和 Makefile 文件中,使用 CONFIG_SYS_TEXT_BASE 宏来指定代码的入口地址

2023-11-09 23:12:20 598

原创 PCI、PCIe 一篇搞定

PCI、PCIe 概述

2023-11-06 23:15:00 1256

原创 SD NAND

那有没有一款产品来解决这个现状呢?有,那就是 SD NAND。

2023-10-24 22:45:00 1343 2

原创 sched,进程调度窥探,进程调度直观感受

在 LInux Kernel 中,使用的最多的就是完全公平调度(CFS)算法。

2023-10-23 00:16:53 393

原创 进程数据结构——task_struct

内核在实现上述功能时,使用的最主要的一个数据结构就是 task_struct。

2023-10-17 22:45:00 323

原创 GCC 优化等级(O0、O1、O2、O3)对程序性能的影响

O3 直接将内层循环给优化掉了,10 次循环展开成 10 次指令,也是牛逼。这样一来,少了内层循环的边界判断。更重要的是,少一层跳转,就减少一次分支预测判断,这对指令执行的效率有显著提升。

2023-10-09 22:05:40 1846

原创 ARM Linux DIY(十四)摄像头捕获画面显示到屏幕

摄像头对应 /dev/video0,屏幕对应 /dev/fb0,所以我们只要写一个应用程序,读取 video0 写入到 fb0 就可以了。

2023-09-29 06:30:00 385

原创 ARM Linux DIY(十三)Qt5 移植

一、指定 platform 为 linuxfb;二、添加字库

2023-09-17 21:56:06 728

原创 ARM Linux DIY(十二)NES 游戏

我们 DIY 的板子具备屏幕、扬声器、USB Host(可以接游戏手柄),当然也要凑一凑热闹。

2023-09-13 23:15:34 780

原创 ARM Linux DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小

Linux 吉祥物小企鹅已跃然屏上

2023-09-11 00:47:14 541

原创 ARM Linux DIY(十)LRADC 按键

有时 ARM SOC 需要三五个按键,这时候 LRADC 就是一个不错的选择,它使用一个引脚,就可以扩展几个到几十个按键。

2023-09-07 21:56:12 929

原创 ARM Linux DIY(九)陀螺仪调试

一开始使用内核自带的 IIO 驱动,发现只能在 /sys/ 目录下读取相应的坐标值,读取 /dev/iio:device0 有问题,并且需要配置中断引脚才能编译通过。所以就不使用内核自带的驱动了。网上找了个 6050 的驱动。

2023-09-07 21:40:31 575

原创 ARM Linux DIY(八)USB 调试

USB 电路简单,只有两根线 D+、D-,器件也简单,就一个 USB 母座,甚至连电阻电容都不需要,其它外设如果也能像 USB 这样就好了。

2023-09-06 00:37:05 1036

原创 ARM Linux DIY(七)麦克风调试

焊接:咪头、电阻、电容

2023-09-03 14:38:33 278

原创 ARM Linux DIY(六)音频调试

对于 SOC 来讲很简单,就一个引脚 HPOUTL(单声道);对于扬声器来讲也很简单,就两个引脚,插上就可以了。另外一个关键点是电容和电阻要焊到位,有没有噪音,音质好坏,全屏电容电阻打下手。

2023-09-01 00:12:39 948

原创 ARM Linux DIY(五)摄像头调试

阶段一:设备树、驱动、硬件;阶段二:应用程序、测试

2023-08-31 00:32:53 937

原创 ARM Linux DIY(四)WiFi 调试

小时候,给电视机安装摇头天线;长大后,给 WiFi 手搓天线。

2023-08-26 21:49:41 1432 1

原创 ARM Linux DIY(三)板载串口和 LCD 调试

发现上电后匹配的是 panel-sitronix-st7789v 这份驱动,那就禁用此启动,换下面的试试,结果还真可以,上电后屏幕直接就显示启动 log 了。

2023-08-23 23:21:56 1279 4

原创 ARM Linux DIY(二)配置晶振频率

板子上焊接的是 26MHz,设备树中配置的是 24000000,这样导致系统时钟不正确,最终产生的串口波特率不是 115200,所以乱码。

2023-08-20 15:05:40 644

STM32 串口 DMA 接收任意长度数据

参考博客:https://liyongjun.blog.csdn.net/article/details/131756421

2023-07-16

自己动手写一个操作系统-MBR(5)

自己动手写一个操作系统——MBR(5) https://mp.csdn.net/mp_blog/creation/success/128771016

2023-01-27

ASMtest20171031.rar

stm32汇编实现闪灯和打印 启动代码

2021-08-09

Wildpackets Omnipeek 10.0.1 Drivers.rar

OmniPeek 无线抓包网卡驱动

2021-06-23

linux系统中SD卡新建分区教程.pdf

博文链接:https://blog.csdn.net/lyndon_li/article/details/115765971

2021-04-16

UNIX 分时系统.pdf

UNIX 分时系统.pdf

2021-01-21

linux_cmd_test.exe

Linux 命令量测试工具,博文链接:https://blog.csdn.net/lyndon_li/article/details/112424078

2021-01-10

MDIO之STM32源码

MDIO之STM32F103VGT6源码;额外包括 IIC 读写 RTL8367RB 代码。实现串口指令。博文链接:https://blog.csdn.net/lyndon_li/article/details/106002925

2020-05-08

Linux device driver中文版.pdf

Linux device driver中文版.pdf,博文参考:https://blog.csdn.net/lyndon_li/article/details/105318966

2020-04-04

FX_serial_asst.rar

三菱 FX3U 编程口通信上位机QT源码 博文链接:https://blog.csdn.net/lyndon_li/article/details/103918490

2020-01-10

OPCUA服务端客户端QT源码

OPCUA客户端和服务器实现,基于QT开发,使用开源C库op62541 博文地址:https://blog.csdn.net/lyndon_li/article/details/92579638

2019-06-17

sz rz 编译安装源码

文件传输工具的移植安装 博文介绍:https://blog.csdn.net/lyndon_li/article/details/85322619

2018-12-28

Android TCP_Client

Android TCP客户端源码 博文地址 https://blog.csdn.net/lyndon_li/article/details/82263172

2018-09-01

stm32图像采集+QT上位机源码

stm32开发OV7670源码,QT上位机源码,C语言处理图像源码

2018-08-14

RT-Thread 串口IAP升级

bootloader + APP(RT-Thread) + 上位机(linux),上位机是在PC端QT基础上移植的,想要QT源码的可以找我要

2018-07-26

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

TA关注的人

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