- 博客(111)
- 资源 (27)
- 收藏
- 关注
原创 【openwrt】【overlayfs】Openwrt系统overlayfs挂载流程
overlayfs是一种叠加文件系统,在openwrt和安卓系统中都有很广泛的应用,overlayfs通常用于将只读根文件系统(rootfs)和可写文件系统(jffs2)进行叠加后形成一个新的文件系统,这个新的文件系统“看起来”是可读写的。
2024-01-18 22:37:49 1364
原创 【openwrt】【procd】Openwrt系统启动流程分析
在Openwrt系统中执行ps命令可以看到 1号进程就是procd但实际上内核启动完成后,运行的第一个用户进程并不是procd,在运行procd之前还执行了其他准备工作,换句话说,procd并不一开始就是“老大”,它只是最终接替了老大的位置。
2024-01-06 13:44:41 1123
原创 【openwrt】package介绍
OpenWrt 构建系统主要围绕package的概念展开。不管是什么软件,几乎都对应一个package。这几乎适用于系统中的所有内容:HOST工具、交叉编译工具链、Linux 内核、内核mod、根文件系统和上层的应用软件。
2023-07-30 23:00:50 1315
原创 Linux MTD子系统(二)——mtdblock驱动分析
mtdX 和 mtdblockX实际上是同一个设备,mtdX是字符设备,mtdblockX是块设备mtdblockX存在的目的主要是为了挂载存在Flash里面的文件系统(例如yaffs2,jffs2)
2023-06-17 23:25:15 2817 2
原创 【文件系统】使用iozone测试你的文件系统是否可靠
当我们使用一个文件系统时(例如Ext4),我们怎么知道这个文件系统是否可靠?它的性能与稳定性如何?这个文件系统的性能瓶颈在哪里?以及如何才能发挥出文件系统的最佳性能?
2023-03-17 23:07:06 2129 1
原创 【openwrt】libubox组件——uloop_process
uloop_process 是 Libubox 提供的一个进程管理工具,它主要用来等待子进程工作的结束,一般需要配合fork一起使用。
2022-11-15 14:21:28 1101
原创 【openwrt】【编译问题】openwrt编译问题
openwrt很多编译错误都是编译配置信息错乱导致的,实际编译的根本不是你预期的target,遇到这种错误应该先明确配置文件是否正常,然后再去找解决办法。
2022-11-07 20:15:06 1575
原创 【计算机网络】【硬件】交换机芯片介绍
所有交换芯片都有一个特殊的端口,称为 switchX-cpu,这是交换芯片的 CPU 端口,用于将流量从交换芯片转发到 CPU,这样的端口是管理流量和路由功能所必需的 。
2022-10-25 10:10:46 11368
原创 【文件系统】如何在ubi之上运行squashfs
UBI提供了能够在ubi卷之上创建只读块设备的特性,这使得squashfs也能够“运行”在ubi卷之上。
2022-06-22 15:25:58 3312 5
原创 【NAND文件系统】UBI介绍
UBI全称Unsorted Block Images,是一种原始flash设备的卷管理系统。这个系统能在一个物理的flash设备上管理多个卷并且能在整个flash芯片上实现损耗均衡。
2022-06-17 16:45:31 7026 1
原创 【NAND文件系统】UBIFS介绍
UBIFS 是诺基亚工程师在塞格德大学的帮助下开发的一种新的闪存文件系统。 在某种程度上,UBIFS 可以被视为 JFFS2 文件系统的下一代。UBIFS工作在UBI卷之上,不能在MTD设备之上运行,也不能在block设备上运行。......
2022-06-16 15:35:33 5565
原创 【openwrt】netifd组件——netifd-proto脚本分析
netifd-proto脚本utils.sh脚本netifd-proto.sh脚本netifd-wireless.shnetifd工具提供如下3个脚本用于网络配置utils.sh脚本netifd-proto.sh脚本netifd-wireless.sh脚本utils.sh脚本utils.sh为netifd-proto.sh和netifd-wireless.sh提供一些基础功能。一般用户不会直接调用。appendadd_default_handlerset_defaultconfig
2022-05-14 09:09:10 2662
原创 iperf2简单使用介绍
iperfiperf官网iPerf 2 user documentationiPerf 3 user documentation注意:iperf2和iperf3不兼容参数说明(iperf2)以下是iperf2部分常用参数说明,iperf3可能有所不同,具体请参考官方文档客户端和服务端共有参数Client/Server: -b, --bandwidth #[kmgKMG | pps] 仅udp有效,单位bits/sec,默认是1 Mbit/sec. -e, --enhance
2022-05-14 09:05:37 5017
原创 【openwrt】libubox组件——kvlist
libubox—kvlist工具kvlist主要数据结构和函数kvlist使用实例Libubox 是 OpenWrt 的一个必备的基础库,包含大小端转换、链表、MD5 、定时器等实用工具基础库。Libubox的kvlist组件基于平衡二叉树实现,另外kvlist是纯数据结构组件,不依赖uloop.下面介绍其kvlist工具的使用方法:kvlist主要数据结构和函数struct kvlist { struct avl_tree avl; int (*get_len)(struct kvlist
2022-04-30 23:28:36 1019
原创 【openwrt】libubox组件——uloop_timeout
uloop_timeoutuloop_timeout 主要数据结构和函数uloop_timeout 原理uloop_timeout 实例Libubox 是 OpenWrt 的一个必备的基础库,包含大小端转换、链表、MD5 等实用工具基础库。下面介绍其定时器工具的使用方法:uloop_timeout 主要数据结构和函数struct uloop_timeout{ struct list_head list; bool pending; uloop_timeout_handler cb; st
2022-04-30 11:08:23 4671 1
原创 ARMv8-A TrustZone概述
什么是TrustZoneTrustZone 是 Arm A-profile 架构中安全架构的名称。 在 Armv6K 中首次引入 TrustZone,在 Armv7-A 和 Armv8-A 中也得到支持。Arm TrustZone是一种针对基于 ARM Cortex 处理器系统的嵌入式安全选项的系统范围方法。ArmTrustZone也可以说是一种嵌入式安全技术,它从硬件级别开始,通过创建两个可以同时运行在单个核心上的环境:一个安全世界和一个非安全世界。Normal 世界(非安全世界)运行丰富的软件,
2022-01-24 14:29:26 5873 1
原创 【openwrt】uloop_run过程分析
uloop_run负责处理如下任务:监控指定的fd(epoll实现)定时器处理子进程管理文章目录uloop_runuloop_process_timeoutsuloop_handle_processesuloop_get_next_timeoutuloop_run_eventsuloop_run_events(Ext)uloop_fd_stack_eventuloop_fetch_events参考uloop_runstatic inline int uloop_run(void){ r
2022-01-13 15:27:29 3721
原创 i2c-tools快速调试E2PROM
一、i2c_tooli2c-tool是Linux应用层调试I2C设备(特别是E2PROM)的利器,这个工具是开源的,并且几乎可以交叉编译到任何Linux系统上。它是一个工具集,具体包括如下工具:i2cdetect: i2c总线探测工具,探测总线上的I2C设备i2cdump:i2c总线dump工具i2cget:i2c读取工具i2cset: i2c写入工具i2ctransfer:自定义I2C消息发送下载 & 编译i2c_tool下载地址源码解压如下:如果是交叉编译到开发板,则需要
2021-12-11 08:49:14 2426
原创 Linux串口编程示例
termiostermios是用于终端I/O的较新(现在已经有几十年历史)Unix API。在termios的帮助下执行串行I/O的程序剖析如下:通过系统调用open打开串行端口通过特定的termios函数和数据结构配置通信参数和其他接口属性通过如下系统调用write,read,readv,writev,select,poll进行读写、轮询。通过close关闭设备termios 的必要声明和常量可以在头文件 <termios.h> 中找到。#include <termio
2021-11-13 16:55:52 3745
原创 Linux input子系统(一)
Linux输入设备Linux将按键、键盘、鼠标、触摸屏等设备统称为输入设备,其本质还是字符设备。在一般情况下,这些输入设备在被按下时会产生一个中断或者由CPU定时轮询这些输入设备,如果输入有效,那么cpu会将读到的键值存在缓冲区,驱动的read接口就可以让用户层获取到这些键值。对于上述流程,在cpu读到有效键值之后的处理都是一样的,也就是read接口只会读取键值,不会关心具体是哪个设备。因此,Linux就设计了一个input框架来处理输入事件,这就是——input子系统。总结起来就是——Linux内核
2021-10-10 22:27:54 1111 1
原创 Linux MTD子系统(一)
MTD(Memory Technology Device)子系统(代表内存技术设备)为原始闪存设备提供了一个抽象层。 当使用不同的闪存类型和技术(例如NAND,OneNAND,NOR 等)时,可以使用相同的API。
2021-08-21 16:48:21 1837
原创 CONFIG_MTD_PARTITIONED_MASTER说明
CONFIG_MTD_PARTITIONED_MASTER对于许多用例,拥有一个用于整个设备的设备节点是有帮助的。MTD 设备以及各个分区的设备节点。例如,这允许查询整个设备的属性。一个常见的习惯用法是创建一个额外的分区,它跨越在整个设备上。这个补丁做了一个配置选项,CONFIG_MTD_PARTITIONED_MASTER,这使得主分区即使在设备已经建立分区的情况下仍然存在。 默认情况下不会打开,因为它提供了向后不兼容的设备编号。总结就是一句话:将整个flash设备当作一个分区注册进内核
2021-08-20 14:05:44 403
原创 s5p4418挂载nfs文件系统
一、主机环境搭建1. 安装NFS serversudo apt install nfs-kernel-server2. 创建nfs目录sudo mkdir -p /nfs3.修改nfs配置文件sudo vim /etc/exports #添加如下内容/nfs 192.168.3*(rw,sync,no_root_squash,no_subtree_check)# 192.168.3.* 3网段的所有ip都可以访问# ro:默认选项,以只读的方式共享 rw:以读写的方式共
2021-06-03 22:59:03 269 1
原创 firefly-rk3288开发板Linux驱动——W25Q32 SPI驱动
一、Linux SPI驱动框架 Linux下的spi驱动和i2c驱动十分类似,也可以分为三个部分:SPI核心,spi主机控制器(i2c中叫做i2c适配器),spi设备。1.spi核心 spi核心提供了主机控制器的注册与注销方法、spi设备注册与注销方法、以及spi通信方法。源码位置位于kernel/drivers/spi/spi.c2.spi主机控制器 spi的主机控制器用spi_master结构体描述://有部分删减struc
2020-09-08 17:37:39 1554 3
原创 firefly-rk3288开发板Linux驱动——AT24C02 E2PROM驱动
一、Linux I2C设备体系Linux源码中I2C驱动目录介绍:目录/文件介绍i2c-core.cI2C核心功能以及proc/bus/i2c*接口i2c-dev.cI2C适配器的设备文件,每一个I2C适配器都视为一个设备,主设备号都是89,并提供通用的open、read、write接口,用户层可以直接调用这些接口访问挂在此适配器下的真实I2C设备。busses文件夹包含不同芯片的I2C主机控制器的驱动algos文件夹实现了一些I2C适配器的通信方法L
2020-08-28 12:57:06 1077
原创 firefly-rk3288开发板Linux驱动——LED驱动
本文主要介绍两个部分的内容:一、准备SDK源码 二、LED设备驱动的实现。由于firefly官方一直在对源码进行更新,所以本文只以我正在用的版本介绍。此外,官方提供的下载工具版本不同需要准备的镜像文件(.img文件)也不同,因此,这里也只介绍我正在使用的版本。 SDK版本:firefly-sdk-20200629.7z下载工具版本:AndroidTool v2.58U-Boot:2017.09Linux内核:4.4.194文件系统:buildroot所有需要的文件如下:
2020-07-12 18:43:06 2354 2
原创 C语言的值传递
相信很多同学对C语言参数传递、一级指针、二级指针等等这些概念还是比较模糊的,刚好今天无意中看到一道有关C语言值传递的面试题,感觉非常具有代表性,背后涉及的知识也非常多,所以这里就拿出来分析一下,顺便讲讲C语言的值传递。(高手请直接略过本文)题目如下:void swap(int *x, int *y){ int *tmp; tmp = x; x = y; y = tmp;}int main(){ int a = 1, b = 2; int *p1 =
2020-06-05 14:09:25 4801
原创 AMetal平台学习——初步了解篇
AMetal是广州周立功科技股份有限公司开发的一套轻量级嵌入式开发平台,它为各种外设定义了统一的抽象接口,使应用程序与芯片底层可以完全分离,轻松实现“跨平台”复用。除此之外,AMetal还致力于为用户提供大量“可裁剪、可替换、可配置”的组件,提升开发的灵活性。目前Amteal原生支持的MCU情况如下:理论上,Ametal支持所有的MCU,但是官方仅推出了以上表格中所列举的MCU(PS:居然都没有STM32???)的硬件层驱动,如果想移植到其他MCU上,需要自己实现硬件层驱动,实际上,同一内核的MCU硬
2020-05-31 11:49:36 2974 1
原创 开源作品——CMSIS-DAP调试器
CMSIS-DAP调试器是一款开源调试器,网上也有很多制作资料,我也是根据这些资料,自己制作了一款CMSIS-DAP调试器,目前使用没发现什么BUG,下载调试功能都OK,就是速度没有JLink快,但是毕竟人家完全开源,还要啥自行车。一、硬件部分单片机:STM32F103C8T6,留出了20P-2.54mm JTAG口以及SWD接口,3.3V和5V电源接口,还有一个虚拟串口。SWO调试口由于不常使用,所以没有留出。另外JTAG口没有加隔离,使用时需要注意!!!实物图如下:二、软件部分软件源码是.
2020-05-26 17:38:16 11625 18
原创 常用降压电路设计
一、5V转3.3V电路设计 1.AMS1117-3V3 AMS1117-xxx是一颗LDO芯片,这个系列有很多型号,后面的xxx代表输出电压,如果是AMS1117-ADJ表明输出是通过电阻调节的。实物图展示:常见封装:电路图:AMS1117-3.3最大输出可达1A,但是其压差较大,一般在1.1V左右,所以功耗和发热量也会随着电流的增大而急剧增大,对于大电流负载,不推荐使用LDO电路,使用DCDC电路效果更佳。 2.ME6211C33ME6211C33是一颗低功耗低压差LDO芯片,其工作
2020-05-21 23:25:27 17780 2
原创 STM32F10x从零开始配置时钟
实际上,对于STM32F10x系列的芯片,如果使用库函数方式开发,芯片的时钟初始化函数已经写好,并且在启动文件(例如startup_stm32f10x_hd.s)中被自动调用,在进入main函数之前,系统以及外设时钟均配置完成,main程序中不需要对时钟再进行任何配置,直接编写应用程序即可。但是作为一个底层驱动玩家必须要打破砂锅问到底,看看STM32F10x系列芯片的时钟系统到底是怎么样的以及如何配置时钟,下文将着重分析STM32F10x的时钟系统以及用寄存器方式从零开始一步一步配置时钟。一、开发环境
2020-05-18 22:13:50 1485
原创 HC-05蓝牙模块主从机通信
一、HC-05蓝牙模块介绍HC-05是一款主从一体式串口蓝牙模块,使用时无需理解复杂的蓝牙协议,把它当作普通串口使用即可,串口通信为透传模式,由于它同时支持主从机模式,所以任意两个蓝牙模块之间都是可以通信的,下文将介绍如何使用两个蓝牙模块进行主从机通信。注意:HC-05属于经典蓝牙2.0版本,与BLE蓝牙区别很大,由于BLE蓝牙没有向下兼容,所以是无法和HC05通信的。模块引脚功能介绍如...
2020-04-27 14:43:59 18425 3
原创 RK3288开发板——Debian8系统制作
一、Debian系统命名规则Debian 10(buster) — 当前的稳定版(stable)Debian 9(stretch) — 旧的稳定版(oldstable)Debian 8(jessie) — 更旧的稳定版(oldoldstable)Debian 7(wheezy) — 被淘汰的稳定版Debian 6.0(squeeze) — 被淘汰的稳定版Debian GNU/Linux...
2020-04-14 14:09:33 2457
原创 Linux安装TFTP服务器
TFTP服务器为了方便在Linux环境和嵌入式开发板互相传文件,可以使用TFTP服务。Linux主机作为服务端,嵌入式开发板作为客户端,由于开发板的Linux环境一般自带tftp,本文只介绍如何在Linux主机上(ubuntu 16.04 LTS)安装tftp服务。目前ubuntu环境可以使用以下TFTP服务器:atftpd ——高级 TFTP 服务器。tftpd ——琐碎的文件传输协...
2020-04-08 15:36:11 1200
原创 i.MX283开发板SPI驱动——RC522
一、Linux下SPI驱动介绍内核版本:2.6.35Linux下SPI驱动和I2C驱动很类似,他们都是一种总线,且都不支持热拔插,因为一般情况下spi或者i2c设备都是直接焊接在板子上的,不像USB设备那样随时插拔,所以根据总线——设备——驱动模型,spi和i2c设备都可以通过xxx_board_info结构体进行注册,Linux下spi驱动的架构如下:spi核心层提供spi master...
2020-03-13 23:58:49 1314 3
原创 wpa_supplicant工具移植
一、移植准备就移植来说,wpa_supplicant的移植和ssh十分类似,wpa_supplicant需要openssl和libnl库,所以我们需要先准备好openssl和libnl库,openssl的移植在前面的文章嵌入式Linux开发板移植SSH中也介绍过一次,这里的openssl库的移植和前面完全一样。我们先准备好源码:openssl-1.0.2.tar.gzlibnl-3.2.2...
2020-03-10 23:24:05 2535 4
原创 i.MX283开发板移植RTL8188ETV无线网卡驱动
一、开发环境开发板Linux内核版本:2.6.35无线网卡型号:RTL8188ETVRTL8188驱动版本:rtl8188EUS_rtl8189ES_linux_v4.1.2_4787.20120803.tar.gz二、内核配置进入内核源码根目录:make menuconfig网络配置:增加802.11协议栈的支持Networking supportWireless无线网...
2020-03-08 22:30:37 1477
原创 i.MX283开发板移植FTP
一、下载vsftp源码vsftp下载目前是最新的3.0.3版本——vsftpd-3.0.3.tar.gz拷贝到Linux下解压,进入源码目录二、编译vim MakeFilemake编译完成之后,我们只需要两个文件vsftpd和vsftpd.confchmod +x vsftpd cp vsftpd /bincp vsftpd.conf /etc三、修改配置文件vim...
2020-02-25 21:50:50 960
原创 嵌入式Linux开发板移植SSH
SSH服务可以很方便的通过网络登录到Linux开发板,同时支持SFTP协议向开发板传输文件。下面简单讲下移植过程。开发板环境:名称:imx283 内核:Linux2.6.35.31.下载源码zlib下载 openssl下载 openssh下载建议先下载openssh,openssh也不要下载最新版本,zlib和openssl的版本最好早于openssh的版本,因为openss...
2020-02-23 16:13:50 3418 1
eclipse CDT 2023-03版本 windows 64位版本
2023-04-01
eclipse-cpp-2020-09-R-win32-x86_64.zip
2020-10-28
CMSIS-DAP制作资料包PCB+源码.rar
2020-05-26
MDKCM525.rar
2020-05-20
HC-05模块指令集.rar
2020-04-27
N25Q128_datasheet.pdf
2020-03-17
openssh7.1+openssl1.0.2+zlib1.2.8.rar
2020-03-12
SMITH_Chart.bkill.com.zip
2019-12-31
STM32F103C8T6+USBHID通信+USB调试助手
2019-04-25
STM32F407+RC632+读写typeA/B卡
2019-02-14
FM1702NL/FM1722硬件SPI读写程序
2019-01-17
STM8L152c8T6+Xmodem+IAP
2018-12-17
CodeBlock17.2带GCC编译器
2018-09-20
Win764位系统可用的hex2bin.exe
2018-09-19
stm32F103RCT6模拟U盘IAP升级
2018-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人