自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Nuko的博客

这家伙很懒

  • 博客(37)
  • 资源 (42)
  • 收藏
  • 关注

原创 使用libusb获取usb串口设备名

使用libusb自动获取usb串口设备名原理tty设备会在/sys/class/tty目录下生成对应的设备名文件,该文件是一个软连接, 由于软连接路径中包含了usb的端口号,所以我们可以通过读取tty目录下文件的软链接查询某个usb端口的tty设备名。/sys/class/tty # ls -lhtotal 0lrwxrwxrwx 1 root root 0 Jan 2 05:56 console -> ../../devices/virtual/tty/

2021-03-09 16:41:55 3412 4

原创 海思hi3516 linux kernel编译过程分析-make uImage modules

2021-02-04 19:01:54 349

原创 海思hi3516 uboot编译过程分析-3 make u-boot-z.bin

uboot

2021-01-29 18:07:04 403

原创 海思hi3516 uboot编译过程分析-2.make

uboot

2021-01-29 18:04:43 244

原创 海思hi3516 uboot编译过程分析-1.1 make deconfig

uboot

2021-01-29 18:01:35 352

原创 基础笔记-8 动态库

文章目录

2021-01-06 17:32:07 91 1

原创 基础笔记-7 静态库

文章目录

2021-01-06 14:31:19 80

原创 基础笔记-4 汇编

文章目录

2021-01-06 14:29:41 57

原创 基础笔记-3 make

文章目录make基本概念Makefilemake基本概念Makefile

2021-01-06 14:28:23 84

原创 基础笔记-5 ld链接控制脚本

文章目录1 常用参数2 链接控制脚本3 链接控制脚本语言3.1 语法介绍3.2 常用的命令语句参考资料:<<程序员的自我修养–链接,装载与库>>1 常用参数各个链接器平台的链接控制过程各不相同,这里介绍的为ld。-static表示使用静态链接方式来链接程序,而不是用默认的动态链接的方式。-e指定该程序的入口函数。-o指定输出文件名。-T指定链接控制脚本。-Tbss-Tbss ADDRESS,设置.bss section地址。-Td

2021-01-06 14:18:01 332

原创 基础笔记-2 gcc编译过程

参考资料:<<深度探索Linux操作系统:系统构建和原理解析>><<程序员的自我修养–链接,装载与库>>http://www.skyfree.org/linux/references/ELF_Format.pdfhttps://static.docs.arm.com/ddi0100/i/DDI%2001001.pdf对于C程序来说,软件构建过程分为4个阶段:预处理,编译,汇编,链接。这里主要记录目标文件格式及链接过程分析,笔记基本摘自<<

2021-01-05 20:08:33 630

原创 RT-Thread 使用FAL多字节读写FLASH

RT-Thread 使用FAL跨页多字节读写SPI FLASHFAL 简介在RT-Thread上使用FAL添加SPI 总线驱动添加SFUD驱动添加SPI DEVICE使用SFUD添加SPI 块设备添加FAL添加fal_nbyte验证FAL 简介FAL (Flash Abstraction Layer) Flash 抽象层,是 RT-Thread 的一个软件包,是对 Flash 及基于 Flash的分区进行管理、操作的抽象层,对上层统一了 Flash 及分区操作的 API ,并具有以下特性:• 支持静态

2020-10-14 14:26:15 3695

原创 c和指针笔记

文章目录作用域链接属性static和extern存储类型static移位操作符指针参考资料:c和指针。  作用域作用于分为文件作用域、函数作用域、代码块作用域、原型作用域。文件作用域(file scope)代码块之外的声明的标识符都具有文件作用域,从它们声明之处到源文件结尾处都可以访问。原型作用域(prototype scope)原型作用域只适用于在函...

2019-07-29 18:08:52 140

原创 代码整洁之道笔记

clean code命名函数关键词:读clean code笔记。  命名有意义的命名。避免误导如一些有异义的缩写,不要让别人把你的名称翻译为他们所熟知的名称。别用双关语。别单个字母。在作用域较小时可以用i,j来循环计数(传统习惯)。有意义的区分如将函数的参数简单命名为a1, a2,改为source和destination则会像样许多。一些含混的词...

2019-07-25 17:53:41 138

原创 RT-Thread pipe的简单demo

文章目录pipe函数pipe demo关键字:rtthread rtt pipe demopipe,管道,在Linux里是一种基本的IPC(Inter Process Communication,进程间通讯),rtt中使用pipe这个函数需要打开RT_USING_POSIX,既然是POSIX,那么跟Linux中的pipe应该没有多大区别,可以直接参考linux的pipe。但是在linux中,管...

2019-07-24 10:59:41 2394

原创 RT-Thread 直接使用spi flash设备

文章目录如果我们不想使用文件系统,要直接读写spi flash,直接调用read和write就行了,但是read和write是读写一个扇区的,不能随机地址读写,如果要随机读写一个地址,需要对其进行封装一下。这里直接上代码了,代码也比较简单,就不注释了。#include "spi_flash.h"#include <rtthread.h>#define SPI_FLASH_...

2019-07-23 15:39:17 5081 5

原创 RT-Thread : 添加SPI Flash设备和文件系统

文章目录添加spi核心代码stm32f10x_spi_bus.c关键字:rtt spi flashRTT版本:4.0.1随着RTT版本不断的更新,RTT已经支持越来越多的组件了,spi当然也不例外。spi子系统的核心部分已经实现好了,我们只需要添加和硬件相关的部分即可。如果不熟悉可以在其他bsp下查找相关的驱动,模仿即可。添加spi核心代码由于我用的是GD25Q16,所以可以直接使用w...

2019-07-23 14:32:36 4989 1

原创 RT-Thread waitqueue等待队列的简单调用

文章目录实例关键字:rtt waitqueue 等待队列waitqueue和workqueue名字看上去有点像,但是这两个是完全不同的东西,workqueue工作队列强调的是work,waitqueue等待队列强调的是wait等待/阻塞,workqueue是将事务延迟处理,而waitqueu是等待条件满足/唤醒,功能是不一样的,不要混淆了。RTT和linux上的wait queue功能差不多,...

2019-07-19 14:07:26 1943

原创 RT-Thread workqueue工作队列的简单调用

文章目录代码示例关键字:rtt workqueueRT-Thread的workqueue功能跟linux上的workqueue是一样的。我们知道在中断中,不能休眠阻塞,不宜做大运算等等,中断要尽可能的快,中断中我们一般只是用来做一些标志等,将业务逻辑处理放到其他地方,Linux中提供了tasklet和workqueue,RTT中只有workqueue。我们可以将不是很紧急处理的事情放到work...

2019-07-18 18:27:17 3200 2

原创 Linux设备驱动笔记:混杂设备驱动程序_miscdevice

文章目录简单的杂设备驱动程序实例misc_register流程图参考资料:LDD3,精通Linux设备驱动程序关键字: 杂设备驱动程序Linux版本:3.3 混杂驱动程序是那些简单的字符驱动程序,它们拥有一些相同的特性。内核将这些共同性抽象至一个API中,这简化了这些驱动程序初始化的方式。所有的混杂设备都被分配一个主设备号10,但每个设备可选择一个单独的次设备号。之前的字符设...

2019-07-17 17:35:41 385

原创 Linux设备驱动笔记:字符设备驱动程序

文章目录示例一:register_chrdev示例二:device_create参考资料:LDD3,精通Linux设备驱动程序Linux提供了几种注册字符设备的方式。如下:示例一:register_chrdev#include <linux/init.h>#include <linux/module.h>#include <linux/cdev.h&gt...

2019-07-09 17:54:41 200

原创 Linux设备驱动笔记:基础杂记

文章目录设备和模块的分类设备号创建设备文件加载模块和卸载模块申请动态内存的几种方式设备和模块的分类    设备分为3种基本类型,字符设备,块设备及网络设备,对应的模块及字符模块,块模块,网络模块。字符设备:串口,键盘等。用"c"标识。块设备:硬盘。用“b"标识。网络设备:网卡。设备号    Linux中的每个设备都有唯一的设备号,设备号由主...

2019-07-03 14:14:49 111

原创 linux内核模块

文章目录最简单的内核模块例子参考书籍:LDD3linux内核版本:3.3最简单的内核模块例子#include <linux/init.h>#include <linux/module.h>static int __init test_init(void){ printk(KERN_ALERT "hello kernel!\n"); ...

2019-07-02 18:04:37 133

原创 打造Vim

文章目录安装vimVundle 插件管理工具YouCompleteMe 自动补全插件ctags C源码跳转查找工具vimrc常用命令安装vim需要安装vim 7.4.1578以上,建议安装8.0及以上版本的,Ubuntu 19 默认是8.1的,直接sudo apt-get install vim就可以了。sudo apt-get install vimVundle 插件管理工具通过g...

2019-06-26 19:00:58 426

原创 linux kernel知识小记

文章目录linux kernel知识小记内核定时器RTC实时时钟内核中的并发自旋锁和互斥体临界区的实现原子操作proc文件系统僵尸进程内核线程的状态中断上下文linux kernel知识小记参考书籍:精通linux 设备驱动开发。内核定时器1、 HZ和jiffies       HZ为每秒的定时器节拍数,HZ越大,定时器间隔时间越小,进程调度的...

2019-06-26 18:55:06 216

原创 git 常用命令

文章目录一些常用的git命令一些常用的git命令查看已暂存的修改文件git diff --cached使用git diff --cached可以查看已经暂存(add)的文件。撤销文件修改git checkout < file >如果文件被我们改的乱七八糟,不想要了,可以使用git checkout test.txt可以将文件test.txt恢复到上一个提交状态。...

2019-06-12 16:10:53 94

原创 使用STM32编写一个简单的RTOS:5.内核同步(三、事件集)

文章目录事件集源码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、事件集。事件集事件集主要用于线程间的同步,与信号量不同,它的特点是可以实现一对多,多对多的同步。即一个线程与多个事件的关系可设置为:其中任意一个事件唤醒线程,或几个事件都到达后才唤醒线程进行后续的处理;同样,事件也可以是多个线程同步多个事件。这种多个事件的集合可以用一个 32 位无符号整...

2019-06-12 14:22:10 384 1

原创 使用STM32编写一个简单的RTOS:5.内核同步(二、互斥锁)

文章目录互斥量源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、互斥量。互斥量在其他书籍中的名称:mutex :互斥锁,互斥量,互斥体。从信号量中我们知道了互斥锁是特殊的二值信号量,只有0和1两种状态。死锁由于互斥锁只有两种状态,开锁或者关锁,假如函数A关了锁后,调用了函数B,函数B也要关锁,这时就会导致死锁。优先级翻转使用信号量会导...

2019-06-12 14:16:12 1538

原创 使用STM32编写一个简单的RTOS:5.内核同步(一、信号量)

文章目录问题及总结内核同步信号量semaphore源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、信号量。问题及总结一、信号量是如何实现永久等待信号的?当time设置为-1时可以实现永久等待,因为在rt_sem_take中判断如果time > 0时才会启动定时器,所以这时该线程会被挂起。挂在该信号量的suspen_thread链表上。当...

2019-06-12 14:06:21 645 1

原创 使用STM32编写一个简单的RTOS:4.时钟管理(二)定时器

文章目录问题及总结跳表源码分析测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、定时器timer。问题及总结一、为什么定时器定时不支持超过RT_TICK_MAX / 2(RT_ASSERT(timer->init_tick < RT_TICK_MAX / 2);)?这个问题其实就跟我们现实中的时钟一样。这个问题分为过了12点(归0)和没过1...

2019-06-12 11:29:26 1085

原创 使用STM32编写一个简单的RTOS:4.时钟管理(一)SysTick

文章目录简介源码分析测试参考资料:RTT官网文档、《cortex-M3权威指南》关键字:分析RT-Thread源码、stm32、RTOS、时钟管理。简介完成了调度器,对象管理,线程管理后,我们就可以多任务并行执行了,但是还是有很多问题,例如我们同优先级的线程,在不挂起的情况下,只能通过手动yield放弃CPU,另一个线程才有机会运行。低优先级的线程也得不到获取CPU资源的机会,这样我们的多...

2019-06-12 11:05:08 838

原创 使用STM32编写一个简单的RTOS:3.线程管理

文章目录RT-Thread的线程简介源码分析初始化线程线程脱离启动线程挂起线程线程睡眠线程让出测试参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、线程管理器。RT-Thread的线程简介线程(thread)是系统能够进行调度的最小单位,在linux中也是这样定义的,但是和我们RTOS中的thread更像是linux中的进程,是系统进行资源分配的基本单位,但...

2019-06-12 10:49:18 1682

原创 使用STM32编写一个简单的RTOS:2.对象管理

文章目录内核对象管理架构代码分析参考资料:RTT官网文档关键字:分析RT-Thread源码、stm32、RTOS、对象管理器。内核对象管理架构RT-Thread 采用内核对象管理系统来访问 / 管理所有内核对象,内核对象包含了内核中绝大部分设施,这些内核对象可以是静态分配的静态对象,也可以是从系统内存堆中分配的动态对象。通过这种内核对象的设计方式,RT-Thread 做到了不依赖于具体的...

2019-06-11 19:40:20 477

原创 使用STM32编写一个简单的RTOS:1.调度(二、调度器)

文章目录调度器调度器的策略调度算法代码分析总结调度器流程实验平台:stm32f10x(cortex-m3)开发板,RTT3.0资料来源:RTT官网文档及cortex-M3权威指南关键字:分析RT-Thread源码、stm32、RTOS、调度器。调度器额,这里还是介绍一下调度的功能吧(瞬间打脸)。调度的作用就是从一堆当前需要运行的线程中找到那个最需要马上运行的程序。然后通过上下文切换,将...

2019-06-11 19:22:19 1677

原创 使用STM32编写一个简单的RTOS:1.调度(一、上下文)

文章目录Cortex M3相关寄存器介绍寄存器组异常异常类型堆栈测试实验平台:stm32f10x(cortex-m3)开发板,RTT3.0资料来源:RTT官网文档及cortex-M3权威指南关键字:分析RT-Thread源码、stm32、RTOS。Cortex M3相关寄存器介绍因为我要边学习RTT,边模仿RTT写一个简单的RTOS,所以需要先写调度、上下位切换部分。关于调度的定义和作...

2019-06-11 18:32:03 3155

原创 使用STM32编写一个简单的RTOS:0、为什么要用RTOS

为什么要用RTOS一、前后台系统二、RTOS一些学习资料为什么要用RTOS一、前后台系统我们刚开始学习单片机的时候,一般都是直接在裸机上写程序。如一个main函数里面加一个while大循环,循环里面做各种任务处理,这就是前后台系统了。如下: //中断处理函数void irq_handler(void){//前台//按键处理}int main(void){init(); ...

2019-06-11 17:36:32 2965 1

原创 CRC16浅析

CRC即循环冗余校验码(Cyclic Redundancy Check),是数据通信领域中最常用的一种查错校验码。奇偶校验虽然简单,但是漏检率太高,而CRC则要低的多,所以大多数都是使用CRC来校验。CRC也称为多项式码。任何一个由二进制数位串组成的代码,都可以唯一的与一个只含有0和1两个系数的多项式建立一一对应的关系。如:1010111对应的多项式为X^6 + X^4 + X^2 + X +...

2017-09-07 17:30:08 10423 1

RTT-Mini-mutex.rar

模仿RTT实现一个简单的互斥锁功能,该互斥锁没有优先级之分,也不能使用递归功能。

2019-06-11

RTT-Mini-sema.rar

模仿RTT实现一个简单的信号量功能,接口名称改为和linux的命名方式,信号量也不支持优先级功能。

2019-06-11

RTT-Mini-timer.rar

模仿RTT实现一个简单的定时器管理,支持线程sleep延时。

2019-06-11

RTT-Mini-systick.rar

模仿RTT实现一个简单的系统时钟节拍,通过时钟节拍线程可以支持主动让出cpu控制权。

2019-06-11

RTT-Mini-thread.rar

模仿RTT在stm32上实现一个简单多线程管理。支持基本的线程操作,创建线程和关闭线程等,不支持sleep。

2019-06-11

RTT-Mini-context-switch.rar

在stm32f10x板子上实现多线程,A,B线程相互调用,来测试线程的切换是否成功。

2019-06-11

MDK-ARM编译器优化手册

MDK-ARM编译器优化英文版,没有0分了。

2017-09-30

STM32-USB-FS-Device-Lib-V4.0.0

STM32F10* /F3*/L1* USB IP stsw-stm32081

2017-03-22

stm32官方例程3.5v

STM32官方3.5v库和程序例子

2016-09-01

ffmpeg examples

官方ffmpeg 3.02 下的 examples代码

2016-06-12

一张图展示 Git 常用命令.pdf

一张图展示 Git 常用命令.pdf

2016-05-13

OV7670.pdf OV7670.pdf

OV7670.pdf

2016-05-13

硬件工程师手册-全.pdf

硬件工程师手册_全.pdf

2016-05-13

TCP-IP详解(卷一、二、三)

TCP-IP详解(卷一、二、三)中文版

2016-05-13

PL2303-Prolific-DriverInstaller-v110

PL2303驱动

2016-04-25

st-link-v2-usbdriver

st-link_v2_usbdriver USB驱动

2016-04-25

sscom42串口助手

sscom42串口助手

2016-04-25

内核面试题内核面试题内核面试题

内核面试题

2016-04-25

linux-C面试题linux-C面试题

linux_C面试题

2016-04-25

uboot-tiny4412-master

uboot_tiny4412-master, 友善之臂1506底板

2016-04-25

RC531开发套件VER3.1

RC531开发套件VER3.1

2016-04-25

Android系统精简方案

Android系统精简方案

2016-04-25

hyper-terminal超级终端

hyper_terminal超级终端

2016-04-25

CY8CMBR3xxx-Register-TRM寄存器

CY8CMBR3xxx_Register_TRM寄存器

2016-04-25

CY8CMBR3xxx中文数据手册

CY8CMBR3xxx中文数据手册

2016-04-25

CY8CMBR3XXX-CapSense指导文档

CY8CMBR3XXX_CapSense指导文档

2016-04-25

CRC循环校验码详解CRC循环校验码详解

CRC循环校验码详解

2016-04-25

stm32模块常用代码

stm32模块常用代码模块常用代码模块常用代码

2014-04-28

空空如也

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

TA关注的人

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