- 博客(28)
- 收藏
- 关注
原创 简单阐述关于Spi Flash最小写入单元是页还是字节的看法
只需要三步就可以将数据写入flash某一页的某一个字节地址中了,前提是这个地址的数据已经被擦除了。个人理解:从底层操作来看,最小写单元是字节,但是Flash的最小管理单元是页;(2)将这一个字节地址在这一页的地址偏移量发送给Flash的cache。(2)发送开始写入的地址,注意,该地址是flash里面的绝对地址。但有个注意的地方就是:绝不允许跨页写。中的在页中的偏移地址,所以无需再操作。(3)发送要写入flash的数据。(4)发送你要操作的第几页。(3)循环写入更新数据。(1)发送写页指令。
2024-08-08 15:26:13
548
原创 Eeprom和Flash的读写区别
页和扇区的概念有点类似。BL24C512的基本参数:(1)容量为512Kbits。总共64KB,分为512个页,一个页128Byte;(2)最高通信速率为1MHz。BL24C512的最小擦除单元为字节。支持读方式:随机读、序列读功能。支持写方式:字节写、页写、部分页写。写之前是否需要擦除:否。有些eeprom可能需要擦除。
2024-08-06 17:40:03
570
原创 堆区、栈区和Code、RO-data、RW-data、ZI-data段的定义和存储方式
堆区、栈区和Code、RO-data、RW-data、ZI-data段的定义和存储方式
2022-11-15 23:33:48
3482
转载 C++多线程,pthread_attr_t 线程属性
1. 线程属性:使用pthread_attr_t类型表示,我们需要对此结构体进行初始化, 初始化后使用,使用后还要进行去除初始化! pthread_attr_init:初始化 pthread_attr_destory:去除初始化 #include <pthread.h> ...
2022-02-21 21:38:21
522
原创 关于C语言函数名和函数指针的关系
两个结论:1、函数名的使用基本等价于函数指针,函数名、取地址&、取内容*得到的都是函数的地址。2、函数名也可以(* <函数名>)()来调用,只是这种方法读写都不方便,所以被简化了。例如: ShowMenu是一个函数名,可以看到他的值是一个地址。 &ShowMenu是对函数取地址,指向和ShowMenu同样的地址可以采用如下两种方式来通过指针调用函数:x=(*fptr)();x=fptr();...
2022-02-21 19:14:30
701
原创 Linux命令: cat >和cat >>
‘>’ 代表 输出的内容重定向到文件。使用> 重定向后 文件 中原本的内容会被覆盖">>" 代表 将输出的内容已追加的方式重定向到文件,使用>> 重定向后 文件 中原本的内容不会被覆盖,而是在原有的内容后面 追加 新的内容...
2022-02-17 09:00:42
4673
原创 RK3566在external下增加工程
建立工程目录并放置源码在rk356x/external目录下新建文件夹,如sciCamera。并拷贝源码到该目录下。增加编译配置项拷贝一个已有的配置项到rk356x\buildroot\package\rockchip\sciCamera目录下。如,拷贝rk356x\buildroot\package\rockchip\opt_dio_lib。并修改Config.in及.mk文件测试配置是否正常配置进ROOTFSZ:\rk3......
2022-02-09 14:33:57
835
原创 linux下的Cmake运用实例与install目标文件安装命令的使用解读
cmake_minimum_required(VERSION 3.8)project(OPT_LCD_LIB)# 打印消息message(${PROJECT_SOURCE_DIR})message(${PROJECT_BINARY_DIR})# 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容#set(变量 文件名/路径/...)set(INSTALL_TARGET_DIR /usr/bin/)set(SRC_LIST opt_lcd_demo.cpp)set.
2022-01-27 15:34:33
2201
原创 linux系统下UTF-8转GBK编码,使用汉字字库在LCD显示汉字
一、我用了正点原子的字库生成工具,生成了12、16、24号字体大小的GBK编码字库,汉字在liunx下存储方式默认为UTF-8内码形式,所以需要将UTF-8内码转换为GBK内码,UTF-8内码占3个字节,GBK内码占2个字节。int opt_lcd::disp_str(int x, int y, char *str,unsigned char size,bool inv){ unsigned char bHz = 0; char tmp_buf[100];//用来存...
2022-01-21 10:09:09
2665
原创 关于C++析构函数什么时候执行的问题
析构函数有2种方式调用,一个是主动调用delete,另一个是根据RAII的规则,在对象的生命周期结束时自动析构。第一点没什么好说的,就简单讲下第二点。对象的生命周期不等于是程序的生命周期,一般我们所谓的生命周期就是一个作用域,当变量或者对象离开这个作用域时就会自动析构。一般一对{ } 就是一个作用域,举个例子int main(){for(int i=0;i<10;i++){ A a;}a//错误,脱离作用域}for结束后,就无法使用a了...
2022-01-16 22:27:17
2720
原创 C语言 - sizeof和strlen的区别
sizeof和strlen的区别: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 sizeof还可以用函数做参数,比如: short f(); printf("%d\n",sizeof(
2022-01-16 16:12:21
288
转载 Linux内核配置——Kconfig文件
1.1、Kconfig文件内容menuconfig NETDEVICES default y if UML depends on NET bool "Network device support" ---help--- You can say N here if you don't intend to connect your Linux box to any other computer at all.config DM9000 tristate "DM9000 suppo
2021-12-30 15:03:59
602
原创 linux设备驱动:xx_driver结构体中成员driver.of_match_table、id_table和设备树的关系
驱动程序匹配的机制. id_table用于从剥离的设备树条目(无供应商部分)中查找匹配项,而of_match_table用于从完整设备树项(具有供应商部分中的条目)查找匹配项.如果检查,则将arizona_of_match定义为:const struct of_device_id arizona_of_match[] = { { .compatible = "wlf,wm5102", .data = (void *)WM5102 }, { .compatible =...
2021-12-28 17:14:45
3872
转载 fork和管道的关系
首先来了解一下fork执行完毕后的情况,将出现两个进程:问题:fork是用来创建进程的,子进程复制与父进程完全一样代码,但是与pipe连用时,也要复制pipe吗?个自往自己管道也东西,读东西,是如何实现进程间通信的呢?答案:fork()不仅创建出与父进程代码相同的子进程,而且父进程在fork执行点的所有上下文场景也被自动复制到子进程中,包括:(1)全局和局部变量(2)打开的文件句柄(3)共享内存、消息等同步对象。由于pipe调用相当于创建了2个文件句柄,因...
2021-12-18 14:53:43
388
原创 在imx6ull上移植Boa服务器
Boa 官 方 网 站http://www.boa.org/ ,下载地址http://www.boa.org/boa-0.94.13.tar.gz(1)编译Boa服务器解压 tar -jxvf boa-0.94.13.tar.gz源码,进入boa-0.94.13目录 tar -jxvf boa-0.94.13.tar.gz首先修改./src/compat.h文件,将 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改为...
2021-11-19 16:53:49
781
原创 笔记本电脑不联网情况下,实现物理主机、虚拟机ubuntu和linux开发板相互ping通
1、我电脑(物理主机)的有线网卡ip配置为2、打开Ubuntn,设置桥接模式,桥接模式下物理机上的vmnet0是物理机上的一个虚拟网卡,被windows隐藏了,无法看到, 用于在桥接情况下虚拟机上的网卡与物理机相连。点击“更改设置”出现下图界面,本来我想将VMnet0桥接到物理主机的无线网卡的,但发现VMnet0桥接模式的下拉列表选项中没有“Realtek PCIe........”这个选项,只发现虚拟网卡VMnet2连接到“Realtek PCIe........”网卡上了。于..
2021-11-18 20:31:03
2431
原创 (int)a,&a,(int)&a,(int&)a区别
float a = 1.0f; cout << (int)a << endl; //将a强制转换为整型 cout << &a << endl; //取a的地址十六进制 cout << (int)&a << endl; //把a的地址强制转换成十进制的整型 cout << (int&)a << endl; ...
2021-09-18 12:08:48
462
原创 关于结构体指针函数的返回值传递给结构体指针的理解
假设存在下面定义struct class *class1; /* 类 */class1 = class_create(THIS_MODULE, IMX6UIRQ_NAME);//struct class *class_create (struct module *owner, const char *name)class_create(); 函数返回值是一个指向class类的变量的指针,其中class1也是一个指向class类的变量的指针,相当于两个同类指针之间...
2021-09-16 16:33:55
860
原创 platform驱动平台下,关于probe函数中,形参dev的“dev->dev.of_node;”的理解
驱动函数里通过int platform_driver_register (struct platform_driver *driver)函数注册的驱动,183 static int __init miscbeep_init(void)184 {185 return platform_driver_register(&beep_driver);186 }198 module_init(miscbeep_init);当platform总线检测到设备树有和该驱动匹配的...
2021-09-14 11:41:20
2290
原创 2021-03-24
堆区、栈区、全局区(静态区)、常量区、代码区在ROM和RAM中的分布(1)RAM从高地址到低地址分为:栈区、堆区、全局区(也称静态区,包括.bss和.data段)一、栈区。栈一般存放局部变量和函数参数,从RAM的高地址,向下生长•临时创建的局部变量存放在栈区。•函数调用时,其入口参数存放在栈区。•函数返回时,其返回值存放在栈区。•const定义的局部变量存放在栈区。这一部分的存储空间是编译器在编译代码的时候就分配好点的固定存储空间。在裸机系统中,这栈的大小由启动文件里面的代码配置。二、堆
2021-03-24 12:59:21
680
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人