- 博客(65)
- 收藏
- 关注
原创 【君正T31开发记录】12.编译工具相关总结及介绍
readelf读elf信息,包括elf文件头、程序头、符号表、动态库链接信息等;elfedit用来修改elf header信息,包括header显示的版本、编译平台、执行平台等。以及写makefile的时候,也需要了解下这些工具的作用及用法,这里总结记录一下常见的工具及相关用法。ldd显示可执行文件或者库文件依赖的动态库有哪些,防止因为动态库拷贝少了导致的运行问题,但是这个不检查动态库版本之类的信息,需要自己小心。将执行时的符号解析提前到链接阶段,以减少程序运行时的动态链接开销。
2025-01-06 23:57:40
586
原创 【君正T31开发记录】11.valgrind工具相关记录--常用的内存、性能分析工具记录
valgrind可以用于程序的内存调试、内存泄漏检测、性能分析,其拥有如下几个主要工具,–help选项也可以看到,但是其选项没做归纳,这里归纳记录看一下。如上,是一些常用工具的记录,valgrind --tool=toolname --help可以查看其他工具或工具的具体选项。
2024-12-29 23:21:23
244
原创 抖音mars code + gtest,帮你实现最简单的单元测试
这里单元测试代码就生成好了,mars code的代码就是依赖gtest框架,我们直接把代码放在那个makefile路径下就行,main函数我们自己封好了就不拷贝过去了,直接make生成test产物,就基本完成了一个类的单元测试。gtest是谷歌的单元测试框架,能帮助我们很简单的构建单元测试用例,搭配其判定语句,能实现单元测试用例的输出判定。单元测试做的好,后期会避免很多问题,特别是这样的单元测试代码还是自动生成的,效率很快哦。把库中的lib include src下的main文件一起拷贝到自己的开发路径。
2024-12-16 19:57:22
438
原创 【君正T31开发记录】10.RTP协议及RTP带h264负载
RTP协议文档,RTP两个子协议RTP、RTCP都在这个文档里边。RTSP是流媒体控制协议,用于媒体传输的交互,具体媒体负载用RTP协议传输,RTP协议,用于实时传输数据,协议信息包括:时间戳、序列号、负载格式。
2024-11-27 14:42:16
823
原创 【君正T31开发记录】8.了解rtsp协议及设计模式
前边搞定了驱动,先不着急直接上手撸应用层的代码,先了解一下大致要用到的东西。设计PC端先用vlc rtsp暂时H264编码(vlc好像不支持h265,这个后边我试试)的视频流,先需要支持上rtsp server,了解rtsp协议是必须的,然后设计这个server,带入一些设计模式的思想优化整体框架设计。
2024-11-24 21:28:31
1438
原创 【君正T31开发记录】6.T31上sensor-gc2083驱动相关拓展了解
前边移植驱动遇到点问题,主要由于sensor gc2083没有驱动源码,现在我们基于已有驱动对gc2083进行驱动,在gc2093驱动源码的基础上进行适配修改。先了解一点基础,gc2083是mipi接口挂载在总线上,通过IIC配置sensor。
2024-11-17 17:14:18
1235
原创 【君正T31开发记录】5.T31驱动移植及加载、测试
前边,已经完成uboot、kernel、rootfs的移植,现在系统已经可以完整启动了,下边,我们需要完成一些对一些设备的驱动,包括sensor、音频设备(mic\spk功放)、视频编码器件。
2024-11-14 22:03:13
1429
原创 【君正T31开发记录】4.busybox工具集编译及根文件系统制作
前边,已经完成kernel启动,最后panic,因为VFS加载不到根文件系统,现在我们来打包一个根文件系统并将常用工具一起打包在根文件系统镜像中。根文件系统,其实就是Linux kernel起来以后的路径,里边包含/etc//proc//tmp//lib/等一系列文件夹及常用命令行程序如lscd等,还有运行环境包括glibc等一系列动态库文件,还有环境初始化脚本如。Linux kernel起来以后,根目录会挂载到根目录上。
2024-11-11 20:06:30
1280
原创 【君正T31开发记录】3.kernel裁剪及交叉编译
前边,我们已经完成了uboot的编译及烧录,起作用就是初步初始化板载器件,包括CPU及RAM初始化,关watchdog等。这就编译内核ok,内核压缩后大小1.32M,解压缩大小看vmlinux大小约4.9M并将其打包成一个uboot可加载的镜像(动态链接,指向uImage.lzma),将这个uImage.lzma拷贝到tftp目录下并传输到uboot。只有这一个报错,表示内核编译过程没有问题,只是缺少uboot打包工具,去之前我们编译的uboot目录下。usb有线以太网卡和SD卡。
2024-11-10 18:03:24
1203
原创 【君正T31开发记录】2.uboot配置及交叉编译
主要是boot loader默认从SD卡17kB偏移的位置loader uboot,配合手册进行前期格式化、分区等,切换了一下环境,就不截图了,看手册吧。最后,把启动卡插进模组卡槽就可以了,启动直接进入uboot,然后把SD卡上的uboot拷贝到板上flash就可以了,后期也就不再需要这张SD卡了。先暂时修改这么多,后续如果uboot大了(手册说明不可以大于240K)再重新裁剪或者打开uboot压缩。mem表示内核启动后的保留内存,rmem是预留给SDK的内存,总大小64M。修改uboot等待时间。
2024-11-09 23:42:05
927
3
原创 【君正T31开发记录】1.开发环境准备
最近拿到一块君正T31zl+gc2083的摄像头模组,写下文章记录一下开发过程。如图,核心板为君正T31zl,摄像头gc2083,一个有线网口,一个mic和一个喇叭,资料附带君正官方SDK,有详细硬件原理图和开发工具(主要是交叉编译链和uboot kernel busybox driver源码);
2024-11-09 02:37:03
1007
原创 OpenCV--二值化
图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果;二值化一般是提取轮廓的准备工作;二值化处理之后,图像只有0或255,变成黑白图像。OpenCV中有全局二值化和局部二值化,全局二值化对光线敏感,局部二值化可以克服光线的影响全局二值化double threshold( InputArray src,//src输入数组(多通道,8位或32位浮点)。 OutputArray dst,//dst输出数组的大小和类型与src相同,通.
2020-08-06 00:30:09
2119
原创 zbar--对zbar开源二维码解码库的分析
鉴于网上对zbar这一开源二维码解码库的中文文档较少,刚好做了点这个库的调用,写了点分析笔记,如果有错,望指出批评
2020-08-04 23:19:42
4063
原创 c++--c++11标准下的三种智能指针
c++中unique_ptr、shared_ptr、weak_ptr三大智能指针简单入门,c++11已经废除auto_ptr
2020-07-26 19:02:15
960
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人