- 博客(24)
- 资源 (9)
- 收藏
- 关注
原创 Markdown教程
Markdown是一种轻量级标记语言。通过简单的标记语法,它可以使普通文本内容具有一定的格式。由于Markdown的轻量化、易读易写特性,成为一种适用于网络的书写语言。同时,Markdown支持嵌入html标签。......
2022-08-13 16:23:05
503
原创 systemd 启动脚本时的问题
systemctl 启动脚本时的问题使用systemd系统启动脚本服务,服务启动正常,但是脚本没有按照我们预想的方式运行,没有输出信息。1、测试环境ubuntu 16.04 32位2、测试脚本脚本路径为 /home/work/shell,编写的脚本如下:#!/bin/bashwhile truedo echo `date` >> ./data.log sleep 10done在脚本所在目录下,手动执行脚本工作正常:3、使用sys
2022-01-21 22:20:58
3429
3
原创 linux内核队列数据结构分析
文章目录1、前言2、linux 内核kfifo3、测试程序1、前言2、linux 内核kfifokfifo的数据结构:struct kfifo { unsigned char *buffer; /* buffer的数据指针 */ unsigned int size; /* 分配给buffer的总大小 */ unsigned int in; /* 写队列的位置 (in % size) */ unsigned int out;
2022-01-11 20:36:24
454
原创 linux驱动学习——自动创建设备节点
文章目录7.1、udev7.2、函数说明7.3、示例代码7.1、udevlinux传统上使用静态设备创建方法,因此大量设备节点在/dev下创建(有时上千个),而不管相应的硬件设备是否真正存在。采用udev的方法,只有被内核监测到的设备,才会去为它们创建设备节点。当插入新设备——加入驱动模块——在sysfs上注册新的数据后,udev会创建新的设备节点。linux系统中/sys/devices/virtual/input/xxx路径下,dev文件和uevent文件会存储驱动的设备号以及设备的名称。
2021-11-11 16:22:23
2616
原创 字符设备注册——更简单的方式
register_chrdev/*如果major为0,该函数会动态分配一个主设备号,成功后并返回主设备号如果major > 0,该函数尝试获取该定制的设备号,申请成功返回0,失败返回负值;*/static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops){ return __register_chrdev(maj.
2021-11-11 16:10:06
327
原创 linux驱动学习——字符设备的注册
5.1、cdevvoid cdev_init(struct cdev *, const struct file_operations *);int cdev_add(struct cdev *, dev_t , unsigned );void cdev_del(struct cedv *);5.2、示例代码#include<linux/module.h>#include<linux/init.h>#include<linux/kdev_t.h>#in
2021-11-11 16:06:06
531
原创 linux驱动学习——字符设备号
字符设备号本质就是一个32位的无符号整型值。高12位为主设备号;低20位为次设备号。查看设备号cat /proc/devices4.1、构造设备号源码路径: include/linux/kdev_t.h#define MINORBITS 20#define MINORMASK ((1U << MINORBITS) - 1)#define MAJOR(dev) ((unsigned int) ((dev) >> MINORBITS))#define MINOR(
2021-10-19 22:34:29
172
原创 CUnit C语言单元测试框架使用体验
CUnit是一个C语言的单元测试框架,具体使用方式可参考:C语言单元测试框架——CUnit在一个代码量交大的工程项目中,在研发自测环节里面,仅完成单元测试不足以确保代码的质量,还要进行代码的**路径测试,分支测试。**测试不同情况下的代码的分支功能是否正常。对于代码路径测试和分支测试,其他的方法暂不讨论,欢迎搭建评论交流。本文介绍一下使用CUnit来进行代码的路径测试和分支测试的方法。1、使用方式对于一个现有的工程代码,代码之间功能的耦合,源文件之间相互关联很难避免,尤其是千古遗留.
2021-10-18 11:21:10
423
4
原创 linux驱动学习——模块传参
3、模块传参实验环境:ubunut32 虚拟机3.1、模块传参的意义和应用程序一样,可以在执行的时候通过命令行输入运行参数传递参数(main函数的参数),只不过方法不一样而已,这个就是模块传递参数的意义。模块参数向用户提供一种随时向内核模块传递、修改参数的方法。比如串口驱动的波特率、数据位数、校验位、停止位这些参数,我们可以在驱动中定义相关变量,然后通过模块传参的方法去读写他们。3.2、如何传参原型:module_param(name, tpye, perm)功能描述:用来从用户层获取参
2021-10-17 18:55:48
558
原创 linux驱动学习——符号导出
符号导出这里的符号主要指的是全局变量和函数linux内核采用的是以模块化形式管理内核代码。内核中的每个模块互相之间是相互独立的,也就是说A模块的全局变量和函数,B模块是无法访问的。如果B模块想访问A模块中的符号该怎么办呢?符号表linux内核里面,它把所有的符号放到一个表里面,模块在编译的时候,它会去这个表里面去找这些对应的符号(函数,全局变量),表里面有很多这样的信息。Ubuntuubuntu中,linux内核的全局符号表在:/usr/src/linux-headers-xxxx-
2021-10-15 22:21:18
687
原创 Linux驱动学习——入门
模块化编程编译加载查看命令make 编译lsmod 显示模块insmod/rmmod 安装/卸载模块dmesg打印log信息dmesg -c 清除当前的log实例#include <linux/module.h>#include <linux/init.h>MODULE_LICENSE("GPL");MODULE_AUTHOR("NEONAN");static int hello_init(void){ printk("hello_init\
2021-10-15 22:17:53
110
原创 Hexo-Next主题配置
Hexo-Next主题配置文章目录Hexo-Next主题配置一、Next主题配置1、网站的图标2、个人头像3、社交链接4、文章版权说明5、显示文章预计阅读时间5.1、前言5.2、安装部署二、其他插件1、文章永久链接2、优化tag,变成彩色的tags3、next主题修改背景图片一、Next主题配置1、网站的图标设置网页上显示的图标favicon:
2021-08-13 00:22:49
1118
原创 ESP8266开发入门
ESP8266开发笔记文章目录ESP8266开发笔记1、开发环境搭建1.1、开发环境:windows10 + vscode1.2、建立开发工程1.3、开发资料1.3、开发资料2、小试牛刀——串口使用1、开发环境搭建开发环境关键字:vscode、PlatformIO IDE、ESP8266 Non-OS SDK。1.1、开发环境:windows10 + vscodevscode软件安装以及常用的插件安装网上说明较多,不做说明。vscode安装完成后,安装PlatformIO IDE插件,搜索关键
2021-04-22 23:55:46
1650
原创 deepin系统使用体验
deepin系统使用体验文章目录deepin系统使用体验虚拟机安装deepin系统其他软件安装虚拟机安装deepin系统在deepin官网中下载最新的系统镜像文件,使用IOS仓库的方式下载速度较快。下载的镜像文件为deepin-desktop-community-20.2-amd64.iso。在vmware中安装的方式参考:vmware虚拟机安装deepin20全过程。注意事项:vmware分配的磁盘空间最小为20G网络模式选择桥接网络其他软件安装lib32z1 lib32std
2021-04-18 15:15:01
27725
7
原创 C语言单元测试框架——CUnit
C语言单元测试框架——CUnit文章目录C语言单元测试框架——CUnit1、CUnit简介2、CUnit安装2.1、安装配置——Ubuntu2.2、安装步骤2.3、安装文件3、CUnit使用介绍3.1、输出方式3.2、输出方式对应的接口函数3.3、测试函数的书写3.4、CUnit 断言4、CUnit使用实例1、CUnit简介CUnit 是一个通过 C 语言编写的用于编写、管理和执行单元测试用例的C语言单元测试框架。它往往被编成库的形式(静态库或动态库)提供给用户测试代码进行使用,用户编写程序的时候直
2021-03-27 17:45:20
6455
原创 面向对象思想在shell编程中的使用
面向对象思想在shell编程中的使用1、面向对象思想在面向对象编程时,最关键的或者最具特点的就是有一个或若干个类。但是在Shell脚本语言中没有类这种关键字或者数据结构,所以我们在这只用一些面向对象编程中的思想。2、 如何在Shell中实现一个“类”类——具有相同或相似性质的对象的抽象。在Shell脚本语言中并没有这种数据结构的关键字。那我们如何在shell中实现类的一些使用方法呢?这里我们使用多个数组结构来实现一些类的思想。3、实例讲解在此以一个小项目实例来讲解一下在Sh
2020-08-29 15:56:22
1631
原创 嵌入式linux系统——BusyBox移植
1、首先下载busybox源码。官网地址https://busybox.net/。2、在linux系统中解压源码包。tar -jxvf busybox-1.24.1.tar.bz23、修改Makefile,添加两行:ARCH = armCROSS_COMPILE = arm-linux-4、编译busybox。直接make menucnofig(1)配置busybox为...
2018-01-16 22:25:09
779
RTL8364/RTL8367 芯片手册及驱动代码
2023-02-13
新华字典,康熙字典数据库,合计6万条数据.7z
2020-04-15
vimcdoc-1.5.0.tar.gz
2017-05-14
taglist_46.zip
2017-05-14
gvim、vim经典教程从入门到精通
2017-02-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人