嵌入式
xubaipei柏培
学无止境...
展开
-
C C++ Java 打印byte char 为16进制数调试
C C++ Java 打印byte char 为16进制数调试C & C++void byteToHex(int num,char* buf){ const char array[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; int d1 = num / 16; int d2 = num % 16; sprintf(buf," 0x%c%原创 2021-12-08 10:29:36 · 1247 阅读 · 0 评论 -
开发细节记录
Android Q 新增api 接口需要先执行下面的编译命令make api-stubs-docs-update-current-api原创 2021-09-18 14:16:20 · 183 阅读 · 0 评论 -
V4L2 Video 学习笔记
V4L2 Video 学习笔记使用到的头文件#include <stdio.h>#include <stdlib.h>//#include <string.h>//#include <assert.h>#include <getopt.h> /* getopt_long() */#include <fcntl.h> /* low-level i/o */#includ原创 2020-12-25 10:47:35 · 295 阅读 · 0 评论 -
Makefile 指定输出目录
Makefile 指定输出目录MakefileOBJ = test.oCC = gccOUTPUT_DIR = buildexcute: @./testtest:$(OBJ) $(CC) -o $@ $(OUTPUT_DIR)/$< $(OBJ): %.o: %.c $(OUTPUT_DIR) $(CC) -c $< -o $(OUTPUT_DIR)/$@$(OUTPUT_DIR): mkdir $(OUTPUT_DIR).PHONY : cleancle原创 2020-08-11 18:05:09 · 6391 阅读 · 0 评论 -
嵌入式学习笔记(十八)- 字符LED驱动
字符LED驱动/*包含初始化宏定义的头文件,代码中的module_init和module_exit在此文件中*/#include <linux/init.h>/*包含初始化加载模块的头文件,代码中的MODULE_LICENSE在此头文件中*/#include <linux/module.h>/*定义module_param module_param_array的头文件*/#include <linux/moduleparam.h>/*定义module_par原创 2020-06-10 22:05:09 · 247 阅读 · 0 评论 -
嵌入式学习笔记(十七)- 字符驱动
字符驱动如果需要不同设备节点有不同的功能,只需要在注册设备的时候添加不同的file_operations 结构体即可#include <linux/init.h>#include <linux/module.h>// 定义module_param module_param_arrary 函数的头文件#include <linux/moduleparam.h>// 定义参数函数中perm 参数的枚举量头文件#include <linux/stat.h原创 2020-06-08 15:16:24 · 196 阅读 · 0 评论 -
嵌入式学习笔记(十六)- 生成字符类设备节点
嵌入式学习笔记(十六)- 生成字符类设备节点概念设备类 bus device driver 都是有比较明确定义的,bus 代表总线,device 代表实际的设备和接口,driver 代表驱动class 是设备类,他是一个抽象的概念,没有对应的实体,它是提供给用户借口相似的一类设备的集合,常见的输入子系统input,usb 串口tty,块设备block 等生成设字符类设备节点函数class_create 创建类文件参数1一般是THIS_MODULE参数2 设备名称创建一个设备类用与节点文原创 2020-06-08 14:42:02 · 220 阅读 · 0 评论 -
嵌入式学习笔记(十五)-注册字符类设备
注册字符类设备分配内存空间函数 kmalloc 用于分配连续虚拟地址小内存分配,在linux/slab.h 头文件中参数1 申请内存的大小最大128k参数2 GFP_KERNEL 代表优先权,内存不够延迟分配清空内存数据memset 参数1 地址,参数2 起始地址,参数3 长度字符设备初始化函数cdev_init在头文件include/linux/cdev.h参数1cdev 字符设备文件结构体参数2 file_operation 结构体注册设备本质是想linux 设备文原创 2020-06-03 11:02:59 · 234 阅读 · 0 评论 -
嵌入式学习笔记(十四)-静态与动态申请字符类设备号
静态申请字符类设备号介绍字符设备函数在文件 include/linux/fs.h 中内核提供了三个函数来注册一组字符设备编号,这个三个函数分别是register_chrdev_region() 是提前知道设备的主次设备号,再去申请设备号alloc_chrdev_region() 那是动态分配主次设备号register_chrdev() 是老版本的设备号注册方式,只分配主设备号,从设备号在mknod 的时候指定申请宏定义 MKDEV 的头文件 include/linux/kdev原创 2020-06-02 16:02:16 · 313 阅读 · 0 评论 -
嵌入式学习笔记(十三)- 驱动模块传参数
嵌入式学习笔记(十二)- 驱动模块传参数应用程序可以在main 函数中传参头文件是include/linux/moduleparam.h内核模块可以通过module_param来传单个参数module_param(name,type,perm) 单个参数name 模块参数名称type 模块参数的数据类型perm 模块参数的访问权限module_param_arrary(name,type,nump,perm)多个参数name 模块参数名称type 模块参数的数据类型nump原创 2020-06-02 15:07:40 · 180 阅读 · 0 评论 -
嵌入式学习笔记(十二)- lEDS 驱动
lEDS 驱动一 硬件原理简单介绍三极管 NPN 锗管电流控制电流源三极端CE间的电阻可变,可以把Rce看成一个可调电阻,可调电阻的变量是电源IO 管脚拉高之后BF 之间达到一定电流,可变电阻RCE就从无限大降低到大概几百欧姆 高点平灯亮,低点平灯灭二 LED 管脚的调用,赋值以及配置linux 中申请gpio 的头文件 include/linux/gpio.h (linux 中统一的)三星平台的GPIO 配置函数的头文件 arch/arm/plat-samsung/plat/gpi原创 2020-05-26 14:57:07 · 275 阅读 · 0 评论 -
嵌入式学习笔记(十一)- GPIO的初始化
GPIO的初始化调用GPIO 调用过程查看内核代码中gpio 的设备,ls drivers/gpio/*.o 可以看到被编译进内核的gpio 驱动找到编译的gpio 源码打开查看gpio-exynos4.ccore_initcall(exynos4_gpiolib_init) linux 初始化过程中会调用初始化函数是在源代码目录下include/linux/init.h 中定义的该头文件定义了一系列的初始化函数//include/linux/init.h #defind core_ini原创 2020-05-25 17:09:56 · 1139 阅读 · 0 评论 -
嵌入式学习笔记(十)- 物理地址和虚拟地址_归纳总结
物理地址和虚拟地址_归纳总结物理地址和虚拟地址通过LED 中的输入电路查找到LED 控制的寄存器是AA4 寄存器地址 (对核心板上的宏定义GPL2_0)通过宏定义名称找到芯片手册中的寄存器地址iROM 用于启动uboot 的一段固化代码iRAM 用于运行iROM 中的固话代码i-cache 用于cpu 与内存通信的在 Memory map 中查找内存地址,linux 函数中ioremap 返回地址,肯定在此区间SFR 是特殊寄存器,GPIO ,终端,总线都在这里物理内存地址 存在于虚拟地原创 2020-05-25 15:53:13 · 504 阅读 · 0 评论 -
嵌入式学习笔记(九)- 原理图的使用
原理图的使用模块拿到原理图需要对模块有一定的了解了解模块的功能能 LED通过功能模块的芯片定位周围的小元件元件标号原理图元件通过元件标号与PCB硬件一一对应通过元件标号查找和了解模块功能PCB上的额外丝印提示不同的功能网络标号网络标号,网络的唯一标识符不同芯片的接口连接器通过网络标号链接在模块或者芯片上找到网络标号,然后两边找一边找到信号的最终端(主控芯片)一边找到板子的最终输出的端口通过网络标号举例LED,Buzzer,AD,uart,显卡等原创 2020-05-22 15:08:09 · 423 阅读 · 0 评论 -
嵌入式学习笔记(八)- 简单应用调用驱动
简单应用调用驱动需要的用到的头文件 (在编译器内)<studio.h> 用于打印,<sys/types.h> 基本数据类型根据编译环境决定32 位还是64位<stat.h> 系统嗲用函数的头文件可以调用普通文件目录管道,socket,字符,块属性,<fcntl.h> 定义了open 函数 <unistd.h> 定义了close函数<sys/ioctl.h> 定义了ioctl 函数 往驱动发命令的函数源码#includ原创 2020-05-21 11:48:53 · 231 阅读 · 0 评论 -
嵌入式学习笔记(七)- 生成设备节点
生成设备节点杂项设备(10 主设备号)是对字符设备的封装,不好归类的设备也是杂项设备主设备号255 个,封装好了,驱动写起来简单源文件在drivers/char/misc.c 是强制编译的生成杂项设备节点杂项设备注册的头文件在include/linux/miscdevice.h常用参数.minor 设备号.name 生成设备节点的名称(与注册设备的platform_driver 中的name 不同).fops 指向一个设备节点文件包含文件结构体的头文件是include/li原创 2020-05-20 15:44:38 · 275 阅读 · 0 评论 -
嵌入式学习笔记(六)-设备注册
设备注册分析平台文件中的 platform_device结构体和platfor_add_devices函数平台文件arch/arm/mach-exynos/mach-itop4412.c设备注册函数文件driver/base/platform.cint paltform_add_devices(struct platform_device **devs,){ int i ,ret = 0; for(int i = 0;i < num;i++){ ret = platform_de原创 2020-05-20 14:33:20 · 363 阅读 · 0 评论 -
嵌入式学习笔记(五)- 驱动注册
驱动注册关键点驱动注册结构体platform_driver 在 include/linux/platform_device.h中驱动注册platform_driver_register,驱动卸载函数platform_driver_unregister 也在这个头文件中这两个函数的参数都只有结构体platform_deriver驱动常见的状态有,初始化,移除,休眠,复位probe函数–platform_match 函数匹配之后,驱动调用的初始化函数remove 函数–移除驱动函数suspe原创 2020-05-19 15:03:41 · 290 阅读 · 0 评论 -
嵌入式学习笔记(四)- 总线_设备_驱动注册流程
总线_设备_驱动注册流程总线查看总线ls /sys/bus/查找设备号cat proc/devices// 杂项设备cat /proc/miscplatform 是虚拟总线,挂载着Driver,Device设备Device设备是挂载在虚拟总线Platform上的//platform //位于include/linux/platform_device.hstruct platform_device{ int id; const char * name; ...}//原创 2020-05-19 14:12:41 · 163 阅读 · 0 评论 -
嵌入式学习笔记(三)- 内核裁剪
内核裁剪.config确认哪些代码编进内核,哪些代码被裁剪掉menuconfig(文本菜单配置界面)生成.config 的一个工具make menuconfigmenuconfig 常用原创 2020-05-18 16:03:46 · 481 阅读 · 0 评论 -
嵌入式学习笔记(二)- 最简单Linux驱动模块
最简单Linux驱动模块Linux 头文件位置在原码目录下的include/linux/module.h所有的代码必须遵循GPL协议添加GPL遵循协议#defind MODULE_LICENSE(_license)#defind MODULE_AUTHOR(_author)#include <linux/init.h>入口函数:module_init(x)出口函数:module_exit(x)Makefile无配置文件最小驱动头文件申明模块信息模块驱原创 2020-05-18 14:16:25 · 158 阅读 · 0 评论 -
嵌入式学习笔记(一)linux 内核体系结构
linux 内核体系结构系统空间用户空间提高效率,分工合作安全角度不同模式下可执行指令与可访问的寄存器不同用户空间与内核空间是程序执行的两种不同状态,我们可以通过系统调用和硬件终端来完成用户的内核空间转移linux 内核空间SCI(System Call Interface) 系统调用函数进程管理PM(Procees Managerment)MM(Memory Managerment) 内存管理VFS(Virtual FIle Systems) 文件管理系统 一切皆文件Devi原创 2020-05-18 10:39:08 · 220 阅读 · 0 评论