coding码场
码龄17年
关注
提问 私信
  • 博客:711,940
    社区:1,863
    问答:1,912
    715,715
    总访问量
  • 206
    原创
  • 5,578
    排名
  • 2,285
    粉丝
  • 6
    铁粉
  • 学习成就

个人简介:毕业十几年都是从事嵌入式系统开发,熟悉Linux、freeRTOS、Android,参与了HDTV、智能手机平板电脑、车载导航、扫地机方面的开发工作,主要负责系统、驱动方面的工作,应用系统也做过一些,做过高工、架构师、带过团队,先后发表过多篇学术论文,已通过软考项目管理师,熟悉IATF16949,CMMI,市工信局项目评审和验收专家。目前在芯片原厂从事嵌入式系统开发。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2007-07-12
博客简介:

Edsam--活到老学到老,掌握核心技术,做好产品服务!

博客描述:
不积跬步,无以至千里;不积小流,无以成江海!
查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    623
    当月
    2
个人成就
  • 博客专家认证
  • 获得313次点赞
  • 内容获得357次评论
  • 获得326次收藏
创作历程
  • 3篇
    2024年
  • 9篇
    2023年
  • 27篇
    2022年
  • 12篇
    2021年
  • 15篇
    2020年
  • 7篇
    2019年
  • 7篇
    2018年
  • 3篇
    2017年
  • 4篇
    2016年
  • 3篇
    2015年
  • 39篇
    2014年
  • 24篇
    2013年
  • 15篇
    2012年
  • 4篇
    2011年
  • 18篇
    2010年
  • 13篇
    2009年
  • 9篇
    2008年
成就勋章
TA的专栏
  • 嵌入式
    24篇
  • C语言
    25篇
  • 管理科学
    4篇
  • 笔记
    1篇
  • 海思平台
    5篇
  • 图像处理
    2篇
  • 汽车工程
    4篇
  • android
    89篇
  • 车载娱乐系统
    5篇
  • 平板
    1篇
  • 生活
    8篇
  • 高通平台
    2篇
兴趣领域 设置
  • 嵌入式
    物联网
  • 软件工程
    性能优化
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

聊聊ASSERT处理在某些场景下的合理用法

最近在跟一个客户反馈的bug,客户是做的安防家用云台机监控设备,说“设备挂测后异常,无法正常使用”的问题,也就是产品在老化的时候,本身应该是在APP端可以实时查看设备推流的视频的,幸运的是客户抓到了运行日志,以前客户也老化过很长时间未出现过这种问题,当客户把外套反馈到对外沟通群,公司甚是重视,立马组织兵力调查,千万不能耽误客户量产。有些错误我们是可以预估到,但是没法完全避免,首先我们要有防错的思维,就像我那同事提出的降低编码等级,数据量小了,也是一个有效手段,但是不能以防万一,不能根治;
原创
发布博客 2024.10.19 ·
888 阅读 ·
13 点赞 ·
0 评论 ·
7 收藏

2023年深圳市城镇单位就业人员年平均工资数据公报

(2)工资总额:根据《关于工资总额组成的规定》(详见官http://www.stats.gov.cn/xxgk/zcfggz/tjxzfg2020/201708/t20170803_1758101.html), 工资总额是指本单位在报告期内(季度或年度)直接支付给本单位就业人员的劳动报酬总额。城镇地区非私营法人单位(包括统计上认定的视同法人单位的产业活动单位)具体包括:除私营单位以外的内资(包括机关、事业)单位、港澳台投资和外商投资企业。(1)单位就业人员:指在本单位工作,并由本单位支付劳动报酬的人员。
转载
发布博客 2024.07.02 ·
174 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

升级uboot时如何自动更新环境变量?

通过load mmc里面的一个特殊名字的文件,如果能加载,说明存在这个文件,就只想then后面的语句,也就是升级uboot业务,当然也可以定义成其他功能,否则就不执行动作,提示没有这个特殊文件即可。如果有need_update_env这个环境变量,就比较一下内容,如果是yes就表示需要更新环境变量,如果没有这个环境变量,说明是老的uboot,也需要强制更新一下uboot的环境变量;第二步:在update_uboot的执行语句的时候,更新一个环境变量,第三步:在uboot启动过程中,检测这个特殊的环境变量;
原创
发布博客 2024.03.03 ·
581 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

同一台电脑访问gitee多个仓库代码

注意,我们发现Host是不大一样的,因为gitA和gitB的HostName是一样的,没法区别了,只有通过一个Host的别名来区分一下该使用哪对密钥。那么gitB的下载地址本身是:git@gitee.com:ds/gitB.git,你发现通过这个地址没法下载,就算以前下载了也sync不来代码;我们可以发现其实gitA,gitB的HostName都是一样的,同一个平台的,gitee.com的。地址变更一下:git@tsgitee.com:ds/gitB.git,这样子一改变,发现下载代码好使了,
原创
发布博客 2023.11.20 ·
424 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

基于libcurl+libopenssl开源库编译出curl下载工具及代码集成curl功能

由于使用的是32bit的编译器,因此makefile里面产生的-m64需要去掉一下,等待编译完成后再安装,执行make install;指定好openssl的头文件,库路径,编译器CC的全路径,CXX也配置上,其他就是一些小配置,--prefix是库文件和可执行文件输出的地方;CC就是编译器的路径, --prefix就是编译出的库文件及可执行文件存放的位置;配置好,执行make,再执行make install,等待完成即可;如果需要编程的来写下载程序的,可以调用curl的接口。:编译openssl。
原创
发布博客 2023.11.18 ·
531 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

内存CACHE同步引起OSD时间戳显示异常

实验的时候,我们把做翻转的动作给取消了,相当于不翻转,图像只是倒立而已,但是做翻转的接口又是调用的OPENCV的接口,这种接口也不大可能出问题,再说它能完成一次就有理由说明人家这个翻转接口功能没问题,这种是纯软件的接口,经久耐用的接口我们应该还是信任的,那就剩OSD画布的内存同步了,怀疑是内存同步的问题。马上做了一个实验,改完非CACHED的,我们怀疑是在OSD重新排序的时候,把OSD画布内容做翻转不成功,因此做了一个实验,就是只设置一次OSD,后期时间戳不刷新,显示是正常的,只不过是倒立的,
原创
发布博客 2023.10.24 ·
521 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

打印编译程序固件的环境信息

SVN的提交号,当然利用shell命令可以完成很多丰富信息的组合和叠加,拼接完信息后,只需要通过echo到一个指定的文件就可以,在程序启动的地方来引用这个动态生成的编译信息。方法都不难,有一些这样的编译信息,会给我们一个清晰的信息指引,对定位问题和不弄错软件版本都有好处。有些公司还会把编译时的代码提交点给打印出来,比如git的最新一个commit ID,软件运行的时候就会先打印编译日期,再打印时间点,这种比较简单易用;通过定义一个头文件的宏来表示着编译相关的信息集合;
原创
发布博客 2023.10.15 ·
318 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【第200篇原创文章】解决低于1%概率出现的芯片VPSS模块跑飞的问题

出问题的时候大致是这种情况,先执行到了删除,就拿到这把锁了,还没删除完之前,update canvas就调用了,这时候handle这些是有效的,就跑到了等锁这里,等删除完成归还锁了后,update就呼噜呼噜的跑下去了。这是明显有漏洞的,调过了handle的有效性检查。切换视频分辨率的时候,叠加在视频上的OSD也会做相应调整,比如300w的视频用个的LOGO图片跟720P视频用的图片大小肯定是不一样的,显示的时间戳这些字号的大小要跟视频成一定比例,不然看起来就不协调了,因此就会有osd删除和再叠加的过程。
原创
发布博客 2023.09.16 ·
510 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

利用procrank再结合业务代码缩小范围压力测试解决内存泄露问题

从两次procrank执行之间,我们只是操作了切换视频的分辨率,切换分辨率的时候,我们图像上的OSD大小和位置都要做适当的调整,比如1080P上的osd肯定不大适合720P,都得重新适配一下,所以就有个退出和重新加载的过程。内存泄露问题很讨厌的,谁都不喜欢。遇到问题不要慌,先理清一下思路,结合工具,结合自动化测试去跑,找规律,找出暗藏的蛛丝马迹,加油!通过分析打印,我们看循环执行的次数,我们发现有一个规律,大概执行100次,大概少了3M样子,发现这个规律,就绞尽脑汁的想,哪个有可能少这么多。
原创
发布博客 2023.09.15 ·
238 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

基于NAND存储的双分区OTA升级方案

关键在于有标记的新分区尝试启动,并且在uboot里能自动减一,如果升级是成功的,运行应用后,应用会检测这个标记,发现有这个标记就会复位,正式切换升级分区。1.10 【启动到应用程序里时同样会检测这个标记,发现是尝试启动标记后,1.9 重启到uboot的时候,先读标记,从标记的新分区尝试启动;1.6 分析两个文件的md5值,不一致就重新刷升级包,最多十次;1.8 标记写完,后退出程序,先sync,后重启机器;主动清除尝试启动标记,更换正常启动标记;在root分区重建升级完成标记文件;
原创
发布博客 2023.09.10 ·
512 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

利用procrank和lsof定位出客户软件内存OOM的问题

在我们释放SDK出来的时候也会有固件测试整体功能的,客户修改了自己的东西后,开发的程序跑起来十来分钟就oom了.我方leader跟客户对接呢又不那么自信似的,客户在群里反复抱怨程序有内存泄露. 我们在公司内也组织了再次内测,跑两天都没有任何内存泄露,因此我们建议客户在我们SDK的基础上,做增量的问题定位,把修改过的代码一点点加到原始SDK上去定位. 你猜现在客户都多牛逼,人家不干,拍着胸脯说我们改过的代码100%没有内存泄露,我们没有申请内存,客户反正就是不想去回退代码定位.猛的一回头,可疑分子来了,
原创
发布博客 2023.09.09 ·
352 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

嵌入式开发常用的几招调试方法

以上几个方法可以同时上,都是比较常用惯用的手段,调试手段越丰富,调试效率也就会越高。特别是遇到一些不容易出现的现象,又不能临时把自己调试想法运行出来,就可以采用前面说的办法,先把想法埋到流程中去,有需要的时候打开一下就行了,这样既能保障系统平时的执行效率不受影响,也能在关键时刻挺身而出,为你披荆斩刺!需要执行调试代码的时候,在SD卡创建一个临时文件,系统access判定文件是否存在,存在了就进去执行,为了减少次数,在执行完调试动作后就直接删除了这个临时文件,防止重入,减少系统负担。废话不多说,直接上方法。
原创
发布博客 2023.06.03 ·
1486 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

git分支上的tag

在发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。在回退版本的时候,相当有用!那怎么用呢? 一、在分支上线打tag 1. 在最新代码上打tag; 这种情况最简单,就是在pull下来最新的代码基础上打一下tag,无需指定commit id,系统会默认最新的这个commit id。打tag需要取一个tag的名字,还得同步写一个tag的message,也就
原创
发布博客 2022.12.04 ·
5386 阅读 ·
8 点赞 ·
1 评论 ·
11 收藏

嵌入式图像上实现软件画线

那么久需要从在图像上直接画出来,也就是改变一下图像上的像素点的值,组成我们需要的线条的表现形式。我们知道YUV420SP的图像有两个plane,Y在一个plane上,uv在另外一个plane上,比起uv的plane大小只有Y的一半大小,那么我们在要替换相应像素点的yuv值得时候就可以找到对应的Y和UV的值。从替换点的yuv值我们可以看出,ImgH,ImgW是图像的宽高, PntY,PntX就是具体像素点位置,要有一个颜色的对应值,支持的颜色多了,我们弄一个颜色对照表,把主要颜色支持上就行了。
原创
发布博客 2022.10.28 ·
815 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

动态数组用一级指针还是二级指针?

在使用中,每次添加的任务数又是不大一样的,那么我们怎么存储好任务数据呢?一级指针好处,你要存储多少个成员就申请多少个NODE空间,后面再要添加的时候,就采用remalloc的方式来解决。我的建议,在买个NODE内存单元不大的情况下,采用一级指针更好一些。弊端操作麻烦,查找效率不高,要先申请存放指针的空间,然后再去申请NODE的空间,相对麻烦一些。弊端需要连续的空间,如果需要大块大块的,可能有remalloc失败的风险。二级指针好处可以利用一些零碎一点的空间,不需要很大的一块连续空间;...
原创
发布博客 2022.07.20 ·
279 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

GPU工作任务存储内存快动态调整兼顾效率

VGS 是视频图形子系统,全称为 Video Graphics Sub-System。支持对一幅输入图像进行处理,如进行缩放、像素格式转换、视频存储格式转换、压缩/解压、打 COVER、打 OSD、画线、旋转、动态范围转换等处理。通常都是GPU来干的,以GPU要干一下用户指定的任务时是一批任务,每次需要完成的任务量又是不固定的,比如拿GPU来给一张输入图片做旋转、裁剪、拉伸、镜像、上下翻折、贴个LOGO、盖个色块、等操作,需要用一个内存块来记录一下这些任务。 对GPU来说,每一个操作都是一个ta
原创
发布博客 2022.06.25 ·
443 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

指针地址和结构体中的数组

看看指针和结构体中的数组怎么用的,很基础的,搞清楚一点好。#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <stdbool.h>#include <stddef.h>#include <unistd.h>#include <fcntl.h>#include <string.h>#include <ctyp
原创
发布博客 2022.05.24 ·
256 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

获取BMP图像的信息简易例子

文件头typedef struct tag_OSD_BITMAPFILEHEADER{ HI_U32 bfSize; HI_U16 bfReserved1; HI_U16 bfReserved2; HI_U32 bfOffBits;} OSD_BITMAPFILEHEADER;typedef struct tag_OSD_BITMAPINFO{ OSD_BITMAPINFOHEADER bmiHeader; OSD_
原创
发布博客 2022.05.21 ·
490 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

checkpatch海思SDK代码遇见的常见错误《二》

17) ERROR:OPEN_BRACE: open brace '{' following enum go on the same line左大括号要跟enum同一行。18)WARNING:LONG_LINE: line over 120 characters这个最简单了,就是超出了最大长度120个字符,但是有时候需要注意,TAB键输入比较多的情况下,即使最后一个字符的COL没有到120,也会报,因为TAB占的多,有些是8个字符宽度。19)WARNING:USE_FUNC: __f
原创
发布博客 2022.05.20 ·
964 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

checkpatch海思SDK代码遇见的常见错误《一》

01)WARNING:AVOID_EXTERNS: externs should be avoided in .c files#3: FILE: sample/region/sample_region.c:3:+extern "C" {-#ifdef __cplusplus-#if __cplusplus-extern "C" {-#endif-#endif /* End of #ifdef __cplusplus */-02)ERROR:POINTER_LOCATION: .
原创
发布博客 2022.05.19 ·
4644 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏
加载更多