摘要: 算法设计: 数据结构:数组、链表、树、哈希表。《大话数据结构》 常用算法:分治法、贪心法、动态规划法、回溯法、分支限界法。《算法图解》 离散数学:计数、图、树。《离散数学及其应用》 程序设计: 《C程序设计语言》Dennis M. Ritchie、《C专家编程》、《C和指针》、《C陷阱与缺陷》 程序 阅读全文
posted @ 2023-04-18 15:00 爱喝拿铁 阅读(21) 评论(0) 推荐(0)
摘要: CPU安全访问方式 读数据前,先调用invalid_cache 写数据后,后调用flush_cache 阅读全文
posted @ 2023-04-18 15:00 爱喝拿铁 阅读(21) 评论(0) 推荐(0)
摘要: 在linux创建进程的方式有 fork(),system(),exec() 阅读全文
posted @ 2023-04-18 14:57 爱喝拿铁 阅读(23) 评论(0) 推荐(0)
摘要: 【问题描述】 spin_lock/spin_lock_irqsave 保护的临界区内禁止调用可能使CPU睡眠/发生调度的函数(包括但不限于ioremap/mutex/semaphore等),否则可能出现死锁引起CPU挂死等问题。 CPU挂死问题在编码压力测试下出现,经过排查和复测已明确是上述原因导致 阅读全文
posted @ 2023-04-18 14:56 爱喝拿铁 阅读(142) 评论(0) 推荐(0)
摘要: 重要概念 在Linux中没有专门用于多线程的调度算法或者数据结构,而是一种特殊的轻量级进程,拥有独特的task_struct结构体,并共享某些资源。 实现多线程 1. 利用POSIX多线程API开发 包含头文件pthread.h API 含义 pthread_create 创建 pthread_jo 阅读全文
posted @ 2023-04-18 14:56 爱喝拿铁 阅读(72) 评论(0) 推荐(0)
摘要: 看门狗实际是一个硬件的定时器,它包含一个输入和一个输出。 输入:俗称喂狗,就是一个计数器清零的信号; 输出:接到MCU的RST端。 工作原理:当定时器溢出时,程序就会将MCU复位 阅读全文
posted @ 2023-04-18 14:56 爱喝拿铁 阅读(81) 评论(0) 推荐(0)
摘要: HKA_S32 ISPWriteI2CData(HKA_U8 u8I2cDev, HKA_U8 u8DevAddr, HKA_U32 u32RegAddr, HKA_U32 u32RegAddrByteNum, HKA_U32 u32Data, HKA_U32 u32DataByteNum) { i 阅读全文
posted @ 2023-04-18 14:55 爱喝拿铁 阅读(41) 评论(0) 推荐(0)
摘要: 简介 Linux里面的misc杂项设备是主设备号为10的驱动设备,它的注册跟使用比较的简单,所以比较适用于功能简单的设备。正因为简单,所以它通常嵌套在platform 总线驱动中,配合总线驱动达到更复杂,多功能的效果。 源码 [[05.miscdevice 源码]] ![[Pasted image 阅读全文
posted @ 2023-04-18 14:54 爱喝拿铁 阅读(202) 评论(0) 推荐(0)
摘要: 结构体源码 [[03.file_operations结构体源码]] ![[Pasted image 78.png]] Linux使用file_operations结构访问驱动程序的函数,这个结构的每一个成员的名字都对应着一个调用。 Linux的设备驱动程序工作的基本原理 用户进程利用在对设备文件进行 阅读全文
posted @ 2023-04-18 14:53 爱喝拿铁 阅读(771) 评论(0) 推荐(0)
摘要: malloc,kmalloc,kzmalloc,vmalloc区别 malloc 函数原型: #include<malloc.h> or <alloc.h> void *malloc(int size); 说明: malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型 阅读全文
posted @ 2023-04-18 14:53 爱喝拿铁 阅读(204) 评论(0) 推荐(0)
摘要: open: 不需要同步 fopen: 会申请一块缓存区,减少用户频繁切换到内核态;会先写入到缓存区,通过flush进行同步。可选择同步/非同步模式。 阅读全文
posted @ 2023-04-18 14:30 爱喝拿铁 阅读(151) 评论(0) 推荐(0)
摘要: C的虚拟内存区域划分 Code Area(代码区):程序代码指令、常量字符串,只可读。 Static Area(静态区、全局区):存放全局变量/常量、静态变量/常量。 该区域的大小在程序一加载进内存的时候就已固定,但是静态变量的值是可以改的。 Heap(堆):由程序员控制,使用malloc/free 阅读全文
posted @ 2023-04-18 14:30 爱喝拿铁 阅读(195) 评论(0) 推荐(0)
摘要: 转移表就是一个函数指针数组; 前提是需要操作符代码必须是从0开始的整数。 #include <stdio.h> /* 本测试用例用于说明转移表的作用 */ typedef int (*PFun)(int, int); int add(int a, int b) { return a + b; } i 阅读全文
posted @ 2023-04-18 14:27 爱喝拿铁 阅读(68) 评论(0) 推荐(0)
摘要: 作用 为一种类型引入新名字,但是不分配空间 struct 比较合规的用法: struct TAG { int a; } struct TAG veg; 如果使用typedef,可以省略声明过程中的struct,但是这个关键字具有提示作用,没有必要省略 typedef struct TAG //TAG 阅读全文
posted @ 2023-04-18 14:27 爱喝拿铁 阅读(99) 评论(0) 推荐(0)
摘要: 运行参数 输出xml报告 GTEST_SAMPLE --gtest_output="xml:rr.xml" & 阅读全文
posted @ 2023-04-18 14:26 爱喝拿铁 阅读(73) 评论(0) 推荐(0)
摘要: GTest 中断言的宏可以分为两类: ASSERT_* 的断言:当检查点失败时,退出当前函数; EXPECT_* 的断言:当检查点失败时,继续往下执行,最后在结果中输出期望值和实际值。 一般 EXPECT_* 更常用,它可以输出测试的多个失败,常用的断言如下,包括布尔类型、整数类型、浮点类型、字符串 阅读全文
posted @ 2023-04-18 14:25 爱喝拿铁 阅读(737) 评论(0) 推荐(0)
摘要: check in 添加.a等被忽略的文件 svn add file --no-ignore --force check out 签出指令:svn co url filename 签出空文件夹指令:svn co --depth=empty url filename 阅读全文
posted @ 2023-04-18 14:24 爱喝拿铁 阅读(21) 评论(0) 推荐(0)
摘要: 软链接 新建:ln -s 源文件 新文件 修改:ln -snf 源文件 新文件 删除:rm -rf ./软链接;如果是rm -rf ./软链接/则删除源文件 CPU资源 CPU负载 观察CPU使用率: mpstat 观察进程使用CPU:pidstat 查看工作 查看:jobs 杀死:kill %nu 阅读全文
posted @ 2023-04-18 14:24 爱喝拿铁 阅读(20) 评论(0) 推荐(0)
摘要: 双向链接:[[Note Name]] 话题引用:[[Note Name #header]] 别名引用:[[Note Name |Alias]] 嵌入引用:![[Note Name]] 块引用:[[Note Name ^]] 阅读全文
posted @ 2023-04-18 14:24 爱喝拿铁 阅读(11) 评论(0) 推荐(0)
摘要: Markdown语法图文全面详解 1. 标题 这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 2. 字体 这是加粗的文字 这是倾斜的文字 这是斜体加粗的文字 ~~这是加删除线的文字~~ 3. 引用 这是引用的内容 这是引用的内容 这是引用的内容 四、分割线 五、图 阅读全文
posted @ 2023-04-18 14:22 爱喝拿铁 阅读(20) 评论(0) 推荐(0)