从零开始嵌入式

Thinking will not overcome fear but action will.

Linux 用户态控制 GPIO

交互式控制 GPIO

内核配置 一般情况下,内核已配置支持 GPIO; 1 2 3 #make menuconfig ARCH=arm -> GPIO Support (GPIOLIB [=y]) 启用支持后,可以通过用户态 /sys/class/gpio/ 目录控制 GPIO; 操作方法 1.导出一个引脚作为 GPIO GPIO 号可去类似 linux/arch/ar...

Linux 设备树小记

记录一些设备树的关键知识

设备树是设备的纯粹描述,不会去改变设备的状态,也不能设置设备初值。应该由驱动程序读取这些描述信息进而控制设备。 先导知识 简述启动过程 设备树 dtb 由 kernel 工程编译生成; 在启动 uboot 时传入 dtb 地址,由 uboot 解析后获取存储器信息以进行系统初始化,接着 uboot 会传递 dtb 地址给 kernel; 设备树源文件 源文件有 dts、d...

Linux 中的虚拟网络

TUN、TAP 和 bridge

TUN/TAP 虚拟网络 介绍 TUN/TAP 是 Linux 内核虚拟网络设备。其中 TUN 是点对点设备,TAP 是以太网设备;tun 设备不需要 mac 地址,同一广播域只能有两个设备,并且传输信息无以太网帧头; 用户空间存在一个字符设备 /dev/net/tun,可以通过对它进行 ioctl 配置生成虚拟网络设备,如 tun0、tap0 等; 准备 内核默认支持,如果没有就...

制作 run 安装包

将脚本和二进制打包在一起

run 软件包介绍 run 软件包实质是将 脚本程序 和 二进制程序 拼接的脚本程序; 开始制作 思路是: 脚本区域(命名为 install.sh):使用 tail 命令读取二进制程序存放到 /tmp 目录下,进行一系列操作后 exit 退出; 连接操作: 1 cat install.sh your_bin > install_...

初步学习 LVGL

从官方文档上学习 lvgl,包括小工具的使用和组件的绘制

工具篇 生成 lvgl 字体 使用 LvglFontTool 工具(最新 v0.4)生成 lvgl 上的字体 c 文件; 开始: 选择字体 我选择“宋体” –> “常规” –> “12” 加入常用汉字,并清除重复 插入 awesome 字体图标,选择添加所有图标 ...

编写简单 fb 驱动

一步步编写 linux fb 驱动

接下来编写 lcd160160 的 linux fb 驱动; 了解 lcd160160 型号:UC1698u 管脚符号 状态 管脚定义 /CS I 片选信号,/CS=0 时选通模块;/CS=1 时模块接口被封锁 /RST ...

使用 VSCode 编写轮询按键驱动

工程的展示和驱动的编写

先导内容 mknod 命令 用途:创建设备节点或命名管道(FIFO) 使用方法:mknod Name { b | c | p } Major Minor b 创建块设备,c 创建字符设备,p 创建 FIFO(创建 FIFO 不需要主次设备号); 示例: 1 mknod /dev/misc_demo c 10 255 创建后查看: 第一个 c 表示这是一个字符设...

制作 ubuntu-base 根文件系统

制作 arm 根文件系统,并用 qemu 仿真

前提 QEMU 仿真入门 开始 参考瑞芯微 Wiki 参考全志 Wiki 下载 ubuntu-base 下载地址:ubuntu-base-18.04.5 选择下载:ubuntu-base-18.04.5-base-armhf.tar.gz 创建工作文件夹 1 mkdir ubuntu-base 下载并...

QEMU 仿真入门

学习使用 QEMU 运行 arm

Windows 版本 下载 QEMU 官网 下载页 提供了 x64 位 Windows QEMU 下载; 下载安装时,只用选择 qemu-system-arm 即可; 接着添加安装路径 D:\Program Files\qemu 到系统全局环境变量 Path 即可; 查看支持仿真的信息 1 2 3 4 5 # 查看支持仿真的终端板(machines) qemu-syst...

linux 根文件系统启动的第一个程序

一些操作系统(linux 内核)启动的基础知识

操作系统(linux 内核)启动步骤 内核启动的 cmdline 配置 root=/dev/ram,内核会使用 ram/ram0 中的内容(ramfs)作为根目录 /; 配置 root=/dev/mmcblk0,内核会使用 mmc 分区中的内容作为根目录 /; 配置 root=UUID=45b1fdef-1bd9-48e6-86b8-xxxxxx,内核会使用相应硬盘中的...