- 博客(107)
- 资源 (5)
- 收藏
- 关注
原创 LVGL的优化
1,单buffer情况下,lvgl无需记录空闲帧对象,只需要一个标志即可;双buffer情况下需要记录,如果两个buffer都没有空闲,主线程需要挂起等待;1, flush_cb()发送信号给送显示线程,通知有新数据帧需要送显示后立即返回,主线程尝试绘制下一帧;2, 送显线程获取新数据帧信号,更新数据并发送FBIOPAN_DISPLAY切换活动帧;2,双buffer情况下,送显示线程waitvsync前需要发送活动帧切换信号;2, 送显示线程获取更新信号更新变更数据到内核帧buffer;
2025-01-17 17:42:25
279
原创 kobj,ktype,kset
int val;&val_attr,NULL,kfree(obj);if (!my_kset) {if (!obj1) {if (!obj2) {return 0;return;
2024-09-09 11:18:41
636
原创 基于OOB的NFTL设计
NFTL将所管理的所有页面作为一个环形队列循环使用。通过一个索引表记录所有页面的逻辑地址和物理地址的映射关系,该表在系统初始化时根据保存OOB中的日志数据创建,在系统执行写入请求时更新。任何页面写入请求,数据均存放在队首页面,并在OOB区保存日志数据。日志数据包含队列信息以及最近写入页面的映射关系。如果写入的页面已经存在,则旧的页面成为垃圾页面。在队列的剩余空间小于一定尺寸时触发磨损平衡处理的同时实现垃圾回收。
2024-07-11 11:26:07
980
原创 通过摄像头检测步频
这个对机器算力要求较高,视频帧处理能力不能满足需求)通过快速傅里叶转换,将和步频相似频率显示出来。(尝试人脸检测,跟着人脸位置变化计算频率。人在摄像头前运动,该数值会呈现周期变化。通过摄像头识别运动频率,比如步频。
2024-06-18 20:00:35
475
原创 linux driver - devres
由于底层驱动在卸载过程经常会有因为没有释放资源而导致的内存泄漏发生。为了解决这个问题,内核引入了devres子系统帮助驱动程序实现资源的自动释放。devres子系统通过在struct device里面增加一个devres list head,将为设备分配的资源关联其上,当设备detach时,设备框架通过devres的release帮助函数将和该设备关联的资源统一释放 。devres也为每种资源提供的单独释放的接口,这样驱动程序可以在运行时不必等到设备卸载就可以主动释放某些资源。devres代码路径:dr
2024-03-19 14:36:14
1090
原创 Bookmarks
微软 Bing 搜索 - 国内版百度在线翻译Android模拟器——QEMU - 李亚锋老师 - 博客频道 - youkuaiyun.comGraphics | Android DevelopersWelcome to Android | Android Open SourceAndroid Training | Android DevelopersApp Components | Android DevelopersGoogle Java StyleUsing Eclipse | Android Developers
2023-11-15 07:33:26
2766
原创 lvgl示例程序自动提取及播放
lvgl内置了大量示例程序,但是模拟器每次只能演示一个示例。通过脚本提取示例入口函数表. 在main.c中增加一个按钮,每点击一次,找回一个示例程序运行。
2023-11-06 15:05:22
608
原创 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
208
原创 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
445
原创 gitlab runner
注册之后就可以运行'gitlab-runner run'启动runner,等待gitlab服务器下发job。在项目根目录提交一个 .gitlab-ci.yml 的文件。当提交了以后,就会触发pipeline流水线了。注册完成后,刷新页面,显示runner信息,点击’、’编辑按钮,勾选‘运行未标记的作业’在项目的主页面左侧边框点击 ‘设置’选择‘CI/CD';怎样限制自动触发,节省服务器。## runner配置。
2023-10-11 16:32:02
674
原创 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
372
原创 数据通信过程的免锁设计
在多核情况下,用自旋锁实现原子操作,在中断里面是可以用的。自旋锁要求每个核持有时间必须尽可能短,否则多核运行都被自旋锁串行化了,多核的性能就体现不出来了。对于uart通信来说,中断处理程序就是其接收buffer唯一的生存者,发送buffer唯一的消费者,这样,它就可以自由的在buffer的一端进行操作,而不会对数据产生影响。环形buffer有一个head和end指针分别用于生产者和消费者操作buffer的输入和输入的其中一端,只要这个环形buffer设计的没问题,就不用担心数据一致性问题。
2023-02-07 14:39:39
367
转载 虚拟机virtualbox中挂载新硬盘
在virtualbox中装好Ubuntu后,发现硬盘空间太小,怎样才能增加硬盘容量?设置 -> Storage -> SATA控制器->右击,选择“添加虚拟硬盘”可看到新加的虚拟硬盘,一般名为:Disk /dev/sdb。用ext4格式对/dev/sdb1进入格式化。可以看到新加的硬盘:/dev/sdb1。将新磁盘分区挂载到/work目录下。然后,根据需求创建合适的硬盘。虚拟机virtualbox中挂载新硬盘。查看现有系统的磁盘空间。键入m,可看到帮助信息。选择基本分区,输入:p。
2022-09-26 11:19:59
971
原创 正确使用自旋锁、互斥锁
最近在看alios-things的代码发现驱动程序中大量使用了自旋锁 。如tty.c里面的函数实现都是通过自旋锁来实现对资源的访问保护。看到这里首先会有疑问,自旋锁能保护临界区吗?一般来说,自旋锁是用于多核系统的不同核心之间对同一个数据区的竞争访问,对于同一个核上的不同线程是不具备防护功能的。(网上有文章解析自旋锁是让线程原地等待,并没有突出smp环境下的核间竞争,似乎要达到不关中断情况下实现临界区保护,可能也有这种自旋锁吧,没见过,见过的请在下面留言,谢谢)怀着上述疑问,打开aos_spinlo
2022-06-28 19:20:16
715
原创 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
122
原创 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
238
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
5620
原创 编译出现undefine reference to ts_**问题解决
查找ts_*所在位置,发现在tslib目录下。查看tslib已经编译成功;查看出错工程的makefile,看到 libts链接选项被一个CONFIG_TSLIB_SURPPORT feature控制;打开menuconfig,搜索这个feature定义路径;打开这个feature重新编译。ok!...
2021-12-20 16:12:38
347
原创 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
187
原创 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
463
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关注的人