- 博客(101)
- 资源 (5)
- 收藏
- 关注
原创 基于OOB的NFTL设计
NFTL将所管理的所有页面作为一个环形队列循环使用。通过一个索引表记录所有页面的逻辑地址和物理地址的映射关系,该表在系统初始化时根据保存OOB中的日志数据创建,在系统执行写入请求时更新。任何页面写入请求,数据均存放在队首页面,并在OOB区保存日志数据。日志数据包含队列信息以及最近写入页面的映射关系。如果写入的页面已经存在,则旧的页面成为垃圾页面。在队列的剩余空间小于一定尺寸时触发磨损平衡处理的同时实现垃圾回收。
2024-07-11 11:26:07
906
原创 通过摄像头检测步频
这个对机器算力要求较高,视频帧处理能力不能满足需求)通过快速傅里叶转换,将和步频相似频率显示出来。(尝试人脸检测,跟着人脸位置变化计算频率。人在摄像头前运动,该数值会呈现周期变化。通过摄像头识别运动频率,比如步频。
2024-06-18 20:00:35
408
原创 linux driver - devres
由于底层驱动在卸载过程经常会有因为没有释放资源而导致的内存泄漏发生。为了解决这个问题,内核引入了devres子系统帮助驱动程序实现资源的自动释放。devres子系统通过在struct device里面增加一个devres list head,将为设备分配的资源关联其上,当设备detach时,设备框架通过devres的release帮助函数将和该设备关联的资源统一释放 。devres也为每种资源提供的单独释放的接口,这样驱动程序可以在运行时不必等到设备卸载就可以主动释放某些资源。devres代码路径:dr
2024-03-19 14:36:14
975
原创 Bookmarks
微软 Bing 搜索 - 国内版百度在线翻译Android模拟器——QEMU - 李亚锋老师 - 博客频道 - CSDN.NETGraphics | Android DevelopersWelcome to Android | Android Open SourceAndroid Training | Android DevelopersApp Components | Android DevelopersGoogle Java StyleUsing Eclipse | Android Developers
2023-11-15 07:33:26
831
原创 lvgl示例程序自动提取及播放
lvgl内置了大量示例程序,但是模拟器每次只能演示一个示例。通过脚本提取示例入口函数表. 在main.c中增加一个按钮,每点击一次,找回一个示例程序运行。
2023-11-06 15:05:22
438
原创 lvgl overview
屏幕上的图像元素以单根对象树管理,默认情况下根对象就是显示器的活动显示器——act_scr,在显示器注册时创建,参见lv_disp_drv_register。应用也可以自己创建screen的根对象,需要显示时,通过lv_scr_load(scr)将其配置为当前显示器的活动屏幕对象。lv_obj_t和lv_obj_class_t是lv用来实现类似cpp的基于类的面向对象的软件设计的基础结构类型。匹配失败,则从父节点的样式数组继续匹配,直到根节点,如果仍然没有匹配,则采用系统默认样式。如:按下+焦点+选中。
2023-10-13 13:59:54
136
原创 gitlab runner
register在项目的主页面左侧边框点击 ‘设置’选择‘CI/CD’;展开runner,将网址和 令牌信息注册到runner:run注册之后就可以运行’gitlab-runner run’启动runner,等待gitlab服务器下发job。注册完成后,刷新页面,显示runner信息,点击’、’编辑按钮,勾选‘运行未标记的作业’在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,就会触发pipeline流水线了。怎样限制自动触发,节省服务器你好! 这是你第一次使用 Markdow
2023-10-11 16:34:28
412
原创 gitlab runner
注册之后就可以运行'gitlab-runner run'启动runner,等待gitlab服务器下发job。在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,就会触发pipeline流水线了。注册完成后,刷新页面,显示runner信息,点击’、’编辑按钮,勾选‘运行未标记的作业’在项目的主页面左侧边框点击 ‘设置’选择‘CI/CD';怎样限制自动触发,节省服务器。## runner配置。
2023-10-11 16:32:02
582
原创 ffmpeg & ffplay
'-acodec codec_name' 强制指定音频解码器为 "codec_name"'-vcodec codec_name' 强制指定视频解码器为 "codec_name"'-scodec codec_name' 强制指定字幕解码器为 "codec_name"'-t duration' 播放 "duration" 秒音/视频。'-y height' 强制以 "height" 高度显示。'-x width' 强制以 "width" 宽度显示。
2023-09-22 14:20:22
347
原创 数据通信过程的免锁设计
在多核情况下,用自旋锁实现原子操作,在中断里面是可以用的。自旋锁要求每个核持有时间必须尽可能短,否则多核运行都被自旋锁串行化了,多核的性能就体现不出来了。对于uart通信来说,中断处理程序就是其接收buffer唯一的生存者,发送buffer唯一的消费者,这样,它就可以自由的在buffer的一端进行操作,而不会对数据产生影响。环形buffer有一个head和end指针分别用于生产者和消费者操作buffer的输入和输入的其中一端,只要这个环形buffer设计的没问题,就不用担心数据一致性问题。
2023-02-07 14:39:39
341
转载 虚拟机virtualbox中挂载新硬盘
在virtualbox中装好Ubuntu后,发现硬盘空间太小,怎样才能增加硬盘容量?设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb。用ext4格式对/dev/sdb1进入格式化。可以看到新加的硬盘:/dev/sdb1。将新磁盘分区挂载到/work目录下。然后,根据需求创建合适的硬盘。虚拟机virtualbox中挂载新硬盘。查看现有系统的磁盘空间。键入m,可看到帮助信息。选择基本分区,输入:p。
2022-09-26 11:19:59
926
原创 正确使用自旋锁、互斥锁
最近在看alios-things的代码发现驱动程序中大量使用了自旋锁 。如tty.c里面的函数实现都是通过自旋锁来实现对资源的访问保护。看到这里首先会有疑问,自旋锁能保护临界区吗?一般来说,自旋锁是用于多核系统的不同核心之间对同一个数据区的竞争访问,对于同一个核上的不同线程是不具备防护功能的。(网上有文章解析自旋锁是让线程原地等待,并没有突出smp环境下的核间竞争,似乎要达到不关中断情况下实现临界区保护,可能也有这种自旋锁吧,没见过,见过的请在下面留言,谢谢)怀着上述疑问,打开aos_spinlo
2022-06-28 19:20:16
669
原创 printf在alios上的实现
components/libc_stub/newlib_stub.c_ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes)通过fd的值区分 输出 类型socket,file,std} else if ((fd == STDOUT_FILENO) || (fd == STDERR_FILENO)) {如果是标志输出,则通过当前控制台输出。...
2022-05-25 19:15:50
100
原创 alios 系统配置转存到一个头文件
用si查看alios的代码由于alios的编译配置项定义在yaml文件中,si不能自动识别程序中使用的各种宏定义。aos config | sed "s/^/#define &/g" | sed "s/=/ /g" > aos_config.h通过上面指令可以将工程配置转存到一个头文件中,这样si查看代码就比较方便了。...
2022-03-22 14:39:08
176
1
原创 USB描述符
USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符描述符类型:设备描述符bcdUSB:0x0200-usb2.0;0x0101-usb1.1配置描述符1、一个USB设备可以有多种配置,这一点可以从设备描述符的最后一项得到:bNumConfigurations:可能的配置数,一般单一设备该值都是1.2、一个USB设备至少要有一个配置描述符。3、配置描述符不会单独发送给USB主机,通..
2022-02-08 15:46:53
5540
原创 编译出现undefine reference to ts_**问题解决
查找ts_*所在位置,发现在tslib目录下。查看tslib已经编译成功;查看出错工程的makefile,看到 libts链接选项被一个CONFIG_TSLIB_SURPPORT feature控制;打开menuconfig,搜索这个feature定义路径;打开这个feature重新编译。ok!...
2021-12-20 16:12:38
296
原创 alithings栈回溯
栈回溯原理:利用寄存器内容以及sp指向的栈数据信息和pc指向的程序指令信息。Thumb指令和arm指令两种情形。Thumb指令: 获取sp和pc值 根据call入口压栈特征,通过pc回溯代码,找到push或者stmdb sp! ..指令,根据指令特征判断栈帧尺寸; 根据上一步获得的指令位置前溯代码,查找sub sp指令(栈临时变量)修正栈帧尺寸; 根据栈帧尺寸更新sp和pc值 根据pc(lr)值判断是否到达栈底,如果到达栈底,则结束回溯,否则进入1重新读取下一个栈帧。
2021-12-09 15:46:20
162
原创 pthread 条件等待及取消点
#include <pthread.h>#include <unistd.h>static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;struct node {int n_number;struct node *n_next;} *head = NULL;/*[thread_func]*/s...
2021-11-29 16:34:57
413
原创 linux kernel内存申请
kmalloc()、kzalloc()、vmalloc() 的区别是:kzalloc 是强制清零的 kmalloc 操作;(以下描述不区分 kmalloc 和 kzalloc) kmalloc 分配的内存大小有限制(128KB),而 vmalloc 没有限制; kmalloc 可以保证分配的内存物理地址是连续的,但是 vmalloc 不能保证; kmalloc 分配内存的过程可以是原子过程(使用 GFP_ATOMIC),而 vmalloc 分配内存时则可能产生阻塞; kmalloc 分配内存的开
2021-11-09 14:47:49
362
原创 RTThread SMP 不同状态的线程存放位置
rt_thread_priority_table[RT_THREAD_PRIORITY_MAX] 保存没有绑定的线程链表pcpu->priority_table[RT_THREAD_PRIORITY_MAX] 保存和cpu绑定的线程链表以上是就绪线程的存放列表pcup->current_thread存放当前运行线程挂起线程,存放在所等待的内核资源对象的等待链表里...
2021-09-30 15:06:37
1930
原创 arm gic
假如我们要将 CP15 中 C0 寄存器的值读取到 R0 寄存器中,那么就可以使用如下命令:MRC p15, 0, r0, c0, c0, 0CP15 协处理器有 16 个 32 位寄存器, c0~c15寄存器 作用 c0 寄存器可以获取到处理器内核信息; c1 寄存器可以使能或禁止 MMU、 I/D Cache 等; c12 寄存器可以设置中断向量偏移; c15 寄存器可以获取 GIC 基地址。 ...
2021-09-30 13:22:44
77
原创 多核自旋锁
ldrex、strex 独占存储指令pld 预加载指令owner,nextowner指示自旋锁当前拥有者序号,next 表示当前线程等待序号每次进入等待next序号加一;如果next和owner不等,则循环查询等待。。。每次释放锁owner加一,指示下一个等待线程可以继续运行...
2021-09-26 18:31:25
678
原创 vscode 目录隐藏
设置里面搜索exclude,添加需要隐藏的目录到files:exclude即可。如果目录多个文件夹需要隐藏,每个独立添加比较麻烦可以将需要隐藏的目录转移到一个特殊目录下,比如名为exclude的目录添加过滤规则 */exclude/这样配置后,任何目录下名为exclude的目录都会被自动过滤...
2021-09-10 17:11:17
778
原创 屏障指令 - 防止优化导致错误
处理器流水线设计、编译器优化设计,为了获得更高性能,有时程序代码顺序会被重新编排。这种 重编排有时 会带来意外的程序 错误。如:preempt_disable();function_which_must_not_be_preempted();preempt_enable();可能如下重排效果:function_which_must_not_be_preempted();preempt_disable();preempt_enable();也可能如下重排效果:preempt_dis
2021-09-09 10:30:40
373
Peer-to-Peer Multimedia Sharing based on Social Norms.pdf
2019-07-19
nattypetester
2019-01-03
zigbee zcl api
2017-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人