自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

为民除害de专栏

目前仍然很捞

  • 博客(54)
  • 资源 (16)
  • 收藏
  • 关注

原创 001、初学Linux内核时的弯路和恐惧心理

1.用自己的话,重新阐述一遍《深入理解linux内核》。2.代码流程图,数据结构图,关键概念,关键API。3.是什么,为什么,怎么做。4.调试代码,观察对用户态内核态有什么影响。

2023-09-18 09:46:51 133 1

原创 浮点数在计算机中的表示,程序中浮点数的取值和比较。

整数部分除2取余,小数部分乘2取整。IEEE 754

2022-06-08 07:31:33 605 1

原创 使用 volatile 破坏系统代码的九种方法

首先怼上:It’s hard to overstate how bad an idea it is for a compiler to use strange heuristics about code structure to guess the developer’s intent.编译器使用奇怪的试探法来猜测开发人员的意图,这个想法有多糟糕,怎么强调都不为过。  1 两个典型用法(1)#define TCNT1 (*(volatile uint16_t *)(0x4C

2022-05-21 17:46:48 600

原创 linux lib/list_sort.c排序算法

linux lib/list_sort.c排序算法没看懂,留念一下。patch地址是https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1957556.html  知识点:__attribute__((nonnull)) 让 compiler 对指定位置的 pointer 是 NULL 时发出警告。比如:__attribute__((nonnull(2,3)))void list_sort(void

2022-05-03 16:46:19 601 1

原创 Linux中的READ_ONCE、WRITE_ONCE

READ_ONCE宏#define READ_ONCE(x) __READ_ONCE(x, 1)#define __READ_ONCE(x, check) \({ \ union { typeof(x) __val; char __c[1]; } __u; \ if (check) \ _

2022-04-30 10:42:00 672

原创 链表快速排序quick-sort(递归+迭代)

递归版直接上代码。static void list_qsort(struct list_head *head){ struct list_head list_less, list_greater; struct listitem *pivot; struct listitem *item = NULL, *is = NULL; if (list_empty(head) || list_is_singular(head)) return; IN

2022-04-26 01:15:24 2149

原创 Linux中的List,HList 和 Hash Table

本文是转载文章,如果有授权问题,请联系我删除。https://danielmaker.github.io/blog/linux/list_hlist_hashtable.html  Listlinux里的list定义:include/linux/types.hstruct list_head { struct list_head *next, *prev;};container_of/** * container_of - cast a member of

2022-04-26 00:37:58 241

原创 你所不知道的C语言——链表内是否有环(龟兔赛跑算法)

判断链表中是否有环,这也是力扣的题:141 Linked List Cycle 142 Linked List Cycle II146 LRU缓存不多比比,直接上代码:变量 mu 指的是 碰头的节点变量 lamda 指的是 环的长度static inline Node *move(Node *cur) { return cur ? cur->next : NULL; }bool cycle_finding(Node *HEAD, Node **TAIL, int *length,

2022-04-22 00:58:09 1148

原创 你所不知道的C语言——链表

linus嘴里的good taste在一次TED演讲中,林老大在14分钟提到,代码的品味。The mind behind linux说实话,这是我第一次听到林老大的声线。看下边一段代码:void remove_list_node(List *list, Node *target){ Node *prev = NULL; Node *current = list->head; // Walk the list while (current != target)

2022-04-21 02:02:14 1128 2

原创 密码攻击——无分支的代码,执行时间是常量

基于时间的密码攻击考虑下边的代码int memcmp(const void *s1, const void *s2, size_t n) { if (n != 0) { const unsigned char *p1 = s1, *p2 = s2; do { if (*p1++ != *p2++) return ((*--p1) - (*--p2)); } while (--n != 0);

2022-04-17 18:08:29 552

转载 科普文章-另一个视角解读计算机编码(修订版)【一个吊丝的个人理解】

本文引用文章地址科普文章-另一个视角解读计算机编码(修订版)_dog250的博客-CSDN博客https://blog.csdn.net/dog250/article/details/73381875现将其内容搞下来,自己加一些理解。以下解读中,方括号是吊丝加上的。第一部分 另一个视角解读计算机编码-补码编码数学的计算机表示数学是一个完全抽象的学科,而计算机是这个学科的一种形象化的实现,显然无法处理一些仅在抽象意义上有意义的特殊“数字”,比如无穷之类的东西。像数学中的加法,乘法这样运算,

2022-04-17 02:56:51 175

原创 深入理解linux虚拟内存管理--02 描述物理内存

几个概念:非一致内存访问 Non-Uniform Memory Access (NUMA)一致内存访问(UMA)参考:NUMA和UMA在Linux中,内存的每个bank被认为是一个节点(node),并用struct pg_data_t来表示。系统中的每个node都被一个pgdat_list链表管理,此链表以NULL结尾。pg_data_t结构体的node_next字段用于链接到下一个节点。PC这种UMA结构的机器,只使用一个静态pg_data_t变量:contig_page_da

2022-01-10 22:18:42 332

原创 深入理解linux虚拟内存管理--01 简介

英文原版书地址https://www.kernel.org/doc/gorman/html/understand/understand001.html

2022-01-10 21:47:21 412

原创 学习shell之后,实战分析

#!/bin/bash################################################################################Variables#查找project目录,以及子目录的所有文档!其中以"GCC/Makefile"结尾的!export PROJECT_LIST=$(find project | grep "GCC/M...

2018-03-21 11:07:00 112

原创 二叉树,二叉排序树,红黑树 学习

二叉排序树是一种比较有用的折衷方案。 数组的搜索比较方便,可以直接用下标,但删除或者插入某些元素就比较麻烦。 链表与之相反,删除和插入元素很快,但查找很慢。 二叉排序树就既有链表的好处,也有数组的好处。 在处理大批量的动态的数据是比较有用。二叉树数据结构:typedef struct _BiTNode { int data; _BiT...

2018-01-15 19:36:00 50

原创 哈希表 学习

看了几篇文章,主要意思就是用简单的值index,去索引复杂的值key,进而找到想要的值value.哈希算法主旨:index = f(key)数据存放格式:(key.value)但是存在问题是,1.哈希算法使不同的key产生相同的index2.分配给哈希表的内存满了之后,整个哈希表的迁移太累赘了。针对第一个问题,下面介绍两个方案:拉链法:http://www.cnblogs.com...

2018-01-15 15:05:00 37

原创 freeRTOS 总结几句

一、列表与列表项二、队列三、列表、与TCB里的列表项1. 任务就绪列表:调度器切换任务时的目的列表。每个优先级一个任务就绪列表。2. 任务挂起就绪列表:调度器挂起时,如有任务准备就绪,只能先进任务挂起就绪列表。当调度器恢复时,任务从挂起就绪列表,移动到任务就绪列表。3. 任务挂起列表:被suspended的任务。4. 延时列表、溢出延时列表:当调用TaskDelay或者等待信号...

2017-12-22 02:36:00 76

原创 HardFault分析

segger官方也有hardFault相关的文档和代码,去这个页面ctrl+F搜索hardfault,可以看到文档和相关代码:https://www.segger.com/downloads/application-notes/参考keil官方文档和相关代码 apnt209 :http://www.keil.com/appnotes/docs/apnt_209.asp以及一个开源的hardF...

2017-12-07 15:56:00 166

原创 苏州之旅有感

苏州speech的攻城狮做的是算法,我们这个项目涉及到音频算法,我想这可能是人家的高端所在吧。继续思考,其实视频算法,也一定是这样的。未来的AI机器,肯定会使用这些音视频算法,而且,会使用电机控制算法!这是我所能想象到的。剩下的比较式想法是,通用的SPI、IIC、串口已经是必须具备的技能,USB、TCP/IP、蓝牙、zigbee以下是某位网友的见解:。...

2017-12-05 10:28:00 72

原创 freeRTOS 内存管理

标准 C 库中的 malloc()和 free()也可以实现动态内存管理,但是如下原因限制了其使用:● 在小型的嵌入式系统中效率不高。● 会占用很多的代码空间。● 它们不是线程安全的。● 具有不确定性,每次执行所用的时间不同。● 会导致内存碎片。● 使链接器的配置变得复杂。五种内存分配方案: FreeRTOS->Source->portable->MemMangFreeR...

2017-11-29 02:18:00 193

原创 freeRTOS 任务通知

一、任务通知(Task Notifictions)可以代替信号量、消息队列、事件标志组等这些东西。使用任务通知的话效率会更高!配置宏 configUSE_TASK_NOTIFICATIONS 打开任务通知。FreeRTOS 的每个任务都有一个 32 位的通知值,TCB中的成员变量 ulNotifiedValue就是这个通知值。 #if( configUSE_TASK_NOTIFICA...

2017-11-29 02:09:00 180

原创 freeRTOS 定时器服务

一、概念:软件定时器、定时器服务任务、定时器命令队列软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的回调函数。不能在回调函数中调用任何会阻塞任务的 API 函数 ! 定时器是一个可选的、不属于 FreeRTOS 内核的功能,它是由定时器服务(或 Daemon)任务来提供的。FreeRTOS 提供了很多定时器有关的 API 函数, 这些 API 函数大多都使用 FreeRTO...

2017-11-26 22:10:00 52

原创 freeRTOS 低功耗模式 和 空闲任务

低功耗模式1. 芯片原本就支持的硬件低功耗2. freeRTOS提供的软件低功耗,Tickless模式!当用户将宏定义 configUSE_TICKLESS_IDLE 配置为 1 且系统运行满足以下两个条件时,系统内核会自动的调用,低功耗宏定义函数 portSUPPRESS_TICKS_AND_SLEEP():-------------------------------##当前空闲任...

2017-11-24 16:53:00 371 2

原创 freeRTOS 事件标志组

任务需要与多个事件或任务进行同步时,需要用到事件标志组。一个事件组就是一组的事件位, 事件组中的事件位通过位编号来访问。事件标志组的数据类型为EventGroupHandle_t。事件标志组中的所有事件位都存储在一个无符号的 EventBits_t 类型的变量中。typedef TickType_t EventBits_t;#if( configUSE_16_BIT_TICKS ...

2017-11-24 14:27:00 50

原创 二级指针 *(unsigned char**)(buf+0) = (unsigned char*)(buf+1)

RTT里面的代码 1 rt_err_t rt_mp_init(struct rt_mempool *mp, 2 const char *name, 3 void *start, 4 rt_size_t si...

2017-11-22 20:25:00 560

原创 freeRTOS 信号量:二值 计数 互斥 递归互斥

用于信号量的队列,都是只有队列数据结构的空间,没有队列项存储空间的队列。二值、计数、互斥、递归互斥,创建完成之后的内存状态:(转自 http://blog.csdn.net/zhzht19861011/article/details/51537234)一、创建二值信号量/** * semphr. h * SemaphoreHandle_t xSemaphoreCreateBinar...

2017-11-20 21:04:00 178

原创 freeRTOS 时间管理

1. 相对时间延时vTaskDelay -> prvAddCurrentTaskToDelayedList(函数分析之后,有步骤解析)为什么使用两个延时列表?2. 绝对时间延时PreTimeWake、SysTickCnt、TimeWake三者的关系图。3. 系统滴答处理函数Increment步骤总结在下边了。相对时间延时#if ( INCLUDE_vTaskDelay == 1 ...

2017-11-20 11:39:00 157

原创 freeRTOS 开启关闭调度器、挂起恢复调度器、vTaskStepTick

1. 开启调度器vTaskStartScheduler| + vPortSetupTimerInterrupt 设置systick,初始化低功耗运行系统补偿时间+----xPortStartScheduler -- + prvEnableVFP 开启浮点运算单元 ...

2017-11-19 23:19:00 1194

原创 freeRTOS 任务切换

使用PendSV实现任务切换上下文切换被触发的场合可以是:#1 执行一个系统调用#2 系统滴答定时器(SysTick)中断。  PendSV中断服务函数  TaskSelectHighestPrior的两种方法#3 最后补充了时间片调度相关的东西。在调度器不挂起的情况下,在任务函数中,一旦置位PendSV请求,立即产生任务切换。一旦置位,立即切换!一旦置位,立即切换!一旦置位...

2017-11-19 20:34:00 98

原创 freeRTOS 挂起、恢复任务

任务挂起:它把所有挂起的任务加到xSuspendedTaskList中,而且一旦调用vTaskSuspend()函数挂起一个任务,该任务就将从所有它原先连入的链表中删除(包括就绪表,延时表和它等待的事件链表【两类列表都要清掉】),也就是说,一旦一个任务被挂起,它将取消先前它的延时和对事件的等待。相反的唤醒就是把任务从xSuspendedTaskList中删除,加到对应的就绪链表中...

2017-11-17 20:25:00 145

原创 freeRTOS 删除任务

直接上代码 1 void vTaskDelete( TaskHandle_t xTaskToDelete ) 2 { 3 TCB_t *pxTCB; 4 5 taskENTER_CRITICAL(); 6 { 7 /* If null is passed in here then it is the...

2017-11-16 21:03:00 170

原创 freeRTOS 新建任务

xTaskCreate创建任务|+----prvInitialiseNewTask 初始化任务TCB| || +----pxPortInitialiseStack初始化任务堆栈|+----prvAddNewTaskToReadyList 把新任务加入到任务就绪列表最后引用了一篇文章,里面介绍了freeRTOS里的全局变量的含义。任务控制块TCB 1 typede...

2017-11-16 19:21:00 206

原创 freeRTOS 队列4 读取消息

出队操作类似于入队的操作。先整明白入队的操作,这个就好说了。分析:1. QueueRecv和QueuePeek都是xQueueGenericReceive实现的2. xQueueReceiveFromISR3. xQueuePeekFromISR函数在读取消息的时候是采用拷贝方式的,所以用户需要提供一个数组或缓冲区来保存读取到的数据, 所读取的数据长度是创建队列的时候所设定的每个...

2017-11-16 11:20:00 224

原创 freeRTOS 队列3 上锁解锁

/* * Macro to mark a queue as locked. Locking a queue prevents an ISR from * accessing the queue event lists. */#define prvLockQueue( pxQueue ) \ taskENTER_CR...

2017-11-15 18:07:00 261

原创 freeRTOS 队列2 ※※※ 发送消息 ※※※

向队列发送消息 BaseType_t xQueueSend ( QueueHandle_t xQueue,const void * pvItemToQueue,TickType_t xTicksToWait 入队阻塞时间);BaseType_t xQueueSendToBack (QueueHandle_t xQueue,const void*...

2017-11-15 15:25:00 88

原创 编程不是一种知识,而是一门手艺。

作者:姚冬链接:https://www.zhihu.com/question/27574436/answer/37185893来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。其实很多人学编程都会遇到困难,我觉得其中一个根本原因是他们没搞明白学编程到底是学什么。编程不是一种知识,而是一门手艺。我们从小到大的学习都是学习知识,流程一般是课前看书预习,上课听讲,下...

2017-11-15 14:39:00 95

原创 freeRTOS 队列1 创建&初始化

freeRTOS最吸引我的地方,就是他的任务间通信、任务间同步所用的概念,全部都建立在“队列”的基础之上。只要抓住队列的实现,对其他的就比较清晰了。对任务状态的管理,建立在“列表”的基础之上。Queue_tqueue.h步骤:xQueueCreate( uxQueueLength, uxItemSize ) ->xQueueGenericCreate( ( uxQueueLen...

2017-11-15 10:37:00 166

原创 freeRTOS List_t列表

Freertos使用的是改良的双向链表。#1 list item 增加了完整性检测(configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES 配置),#2 增加了list item的owner(owner一般指的就是任务控制块TCB);#3 增加了list的item的Container容器(指定item所在的list);  根据TCB里面的两个列表项进行分类:1...

2017-11-14 17:19:00 200

原创 uboot2015.04 裁剪过程记录

include\common.h #define DEBGUcommon\cmd_mmc.c do_mmc_dev, do_mmc_rescan里面强制init_mmc,ture改为false,可以节省多余的三次mmc_init。include\configs\mx6sabre_common.h修改CONFIG_BOOTCOMMAND,不再loadbootscript,直接loadimage...

2017-11-08 15:51:00 119

原创 系统程序员成长计划007第三章动态数组 --其他函数

//数组最前面添加元素Ret darray_prepend(DArray* thiz, void* data){ void* temp; return_val_if_fail(thiz != NULL, RET_INVALID_PARAMS); darray_insert(thiz, 0, data); temp = thiz->data[0]; ...

2017-11-05 22:16:00 42

USB DFU培训.pdf

st出品的培训资料

2021-05-12

图解安卓 Binder

rt

2021-05-07

800*600@30视频文件h264编码(800x600)

800x600@30视频文件h264编码

2021-01-19

rtl8723bu驱动Linux包括WiFi和BT.rar

如题,压缩包里的是rtl8723bu的linux驱动,包括WiFi和Bluetooth。 从供应商那里要的,亲测可用。

2020-06-08

hi3518e + ov9732 采集 h.264 裸流 BoYun摄像头

1.sample目录下的 Makefile.param SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS 改为: SENSOR_TYPE ?= OMNIVISION_OV9732_DC_720P_30FPS 2.把压缩包放到海思SDK的mpp/sample目录下,进去直接make即可。 3.使用的SDK版本是Hi3518E_SDK_V1.0.5.0 4.工具链是arm-hisiv510-linux-

2020-06-08

【四个项目全】国嵌mini2440高级项目SDK【4】

【四个项目全】国嵌mini2440高级项目SDK【4】 代码包括H264监控系统设计、安全文件传输系统设计、嵌入式MP3播放器,移动图像监控系统设计。 这里面是移动图像监控系统设计

2020-02-29

【四个项目全】国嵌mini2440高级项目SDK【3】

【四个项目全】国嵌mini2440高级项目SDK【3】 代码包括H264监控系统设计、安全文件传输系统设计、嵌入式MP3播放器,移动图像监控系统设计。 这里面是嵌入式MP3播放器

2020-02-29

【四个项目全】国嵌mini2440高级项目SDK【2】

【四个项目全】国嵌mini2440高级项目SDK【2】 代码包括H264监控系统设计、安全文件传输系统设计、嵌入式MP3播放器,移动图像监控系统设计。 这里面是安全文件传输系统设计

2020-02-29

【四个项目全】国嵌mini2440高级项目SDK【1】

【四个项目全】国嵌mini2440高级项目SDK【1】 代码包括H264监控系统设计、安全文件传输系统设计、嵌入式MP3播放器,移动图像监控系统设计。 这里面是H264监控系统设计

2020-02-29

国嵌mini2440项目 SDK-MP3 代码

国嵌mini2440项目 SDK-MP3 代码 需要的请下载,没什么好说的,主要看app.c代码 竟然是system("madplayer")进行播放的,我去,,,

2020-02-29

rtl8822bu的驱动,蓝牙WiFi都有

从网上搜集的rtl8822bu驱动,WiFi蓝牙都有,已经验证过,可以使用。 00013955-RTL88x2BU_WiFi_linux_v5.6.1.2_32629.20190321_COEX20180928-6a6a 这个是bu的WiFi驱动 Linux_BT_UART_v3.10_20170314_8822BS_BTCOEX_20170113-4141 这个是bs的蓝牙驱动,不是bu的 Linux_BT_USB_v3.10_20171108_8822BU_BTCOEX_20171124-5656 这个是bu的蓝牙驱动

2019-11-21

tvp7002_1080p.rar

如题,硬件接法为VGA(5wire)----->tvp7002---->bt1120(16bit即可)---->hisi3531d tvp7002输出1080p@60正常

2019-09-20

深入理解计算机系统 书+代码

自己整理的深入理解计算机系统,书和代码。需要的自己下载吧!

2018-02-28

TCPIP详解 卷1 协议1

TCPIP详解 卷1 协议1。还有后续其他的奥~

2013-03-26

0.5S松夏多功能-产品说明书

0.5S松夏多功能电能表-产品说明书 只是一个电能表

2013-03-26

通信规约DL-T 645-2007 多功能电能表

通信规约DL-T 645-2007 多功能电能表

2013-03-26

空空如也

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

TA关注的人

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