自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(187)
  • 收藏
  • 关注

原创 锁 与 异步

死锁的 根本原因 是 在加锁 与解锁 之间 ,它 又去访问锁,倒是 程序阻塞, 进而永远走不到解锁的步骤。为什么会用到锁呢,我觉得主要就是 为了休眠, 因为获得锁的时候 ,得不到 有休眠的功能。这里 与 僵尸进程 的含义是一样的,就是进程推出之后,资源没有被回收。这里可以 看 completion ,这是个主动睡眠的函数。既然有了 线程 ,那么就有 对共享资源的操作,就是锁了。所有 访问 锁的 ,如果 得不到,都会 阻塞住。2、自旋锁, 是一个 轮询的操作。1 、 线程是轻量级的进程。

2025-07-01 15:05:01 253

原创 tcp, udp , 与 select .

2、 udp 不会有 connnetct 函数。3、 udp 也不会有 socket 函数。1 、 udp 不会有 三次握手。

2025-06-14 15:54:01 319

原创 朱老师, hi3518e, 第九季

我感觉,他之所以可以这个多的 转化,可能,在最初的图像中,其实已经记录了 这些细节,只不过 图片输出的时候,忽略了这些细节,但是他是记录了下来的,所以他才有了这些 显示出这些细节的算法。3A 的算法,有一部分是纯软件上的,有一部分是 需要操作硬件的,所以 它最后 还是会 操作到 sensor 的硬件,也就是说, 需要 sensor 的一些控制函数 向 3A去注册。黑电平 是对 暗电流的校准, 就是在一个 黑暗的屋子里,没有光,但是也是有电流的,但是我们就把 这样的电流 标定为 0 .有点 放大器的感觉。

2025-05-14 14:16:31 688

原创 朱老师,3518系列,第八季

它这里 使用 320 x3 又除以 2 明显是 计算出了,原图那么打的 数据,如果是 osd 的话,假设是多少的 像素,我觉得 以后它 还会做 像素的转化。2、 他这里的添加 OSD jing然不是 在 RTSP发送的函数中实现的,也就是说 海思的 ko 库, 应该是开的 线程获进程。这里的 像素格式 , Argb1555 , 后面的数字 代表的是 占的字节数, 这里一共是 16位, 2个字节。这里的作用是,如果图片中,有白色, 或者 黑色, 那么我就把它的颜色 变成透明的,也就是所谓的背景色。

2025-05-14 14:16:18 913

原创 朱老师,3518e系列, 第七季

他这里直接拷贝的 整理好的 压缩包,替换掉 mpp ,并没有说怎么 去移植。原来 还可以 自己 改动 mp4v2 的库, 自己定义一个协议 ,进行 打包,解包 ,这里的 路径要改, 这里默认的 test.mp4 在 / 目录下,一会儿就满了。运行程序的时候, 是一遍 在 进行 rtspl 的推流, 一边进行 打包的。这里 他分析的 是 已经 移植号的, mp4.tar 压缩包。分割的意思 就是 ,先解包,然后 在 分片, 然后 在打包。也就是说 , mp4 的打包的函数 就是这一个 就搞定了。

2025-05-14 14:16:03 841

原创 朱老师,3518e系列,第六季

3 samle_comm_venc. c 中 多了 , SAMPLE_COMM_VENC_Sentjin 这个发送函数,这个是自己实现的。因为 消费 与 生产的 速度 是不一定的, 有时候 生产快,有时候消费快,如果 某一个是 固定快的话,那么就没有 缓冲区的必要了。总结: rtsp 并没有像 ortp 那样 , 去编译库文件, 而是 直接 改的 源码, 这样的话, 更容易编译。也就是说, lsps , lpps , lsei I帧 ,都要加上分隔符, 后面的p帧 就不加 分隔符了。

2025-05-14 14:15:12 895

原创 朱老师,3518e系列, 第5季

第三种: 跟第二种是一样的,这里的 彻底不用 有线网, 指的是 nfs 挂载 也有 无线,其实是一样的。第二步 主要添加的是 平台的编译 选项 , 这样改的话, 可以 当作一个 模块来编译的。连接上之后 ,需要 是、配置一下 ip 地址, 因为此时 的 pc 的 ip 是 乱的。第三步 就是 在 设置 源码所使用的 头文件的 路径。这个也是 按照平台来的。按理说,不用移植了, 用之前的方法就可以连接呀。第六节, sta 模式下的 ortp 的实战。使用的是 ortp , 流程跟有线是一样的。

2025-05-14 14:14:54 311

原创 朱老师, 3518e系列, 第四季

海思 提供了 关于 3A算法 库文件, so, 以及 sample 的源码, 但是 3A的源码 没有提供。然后是看makefile, 可以看到 最后 是 以 so 的形式存在的, 并不是 ko 的形式。主要就是 注意一下 buf[] 数组的 数据的排列。涉及到硬件的 有两部分, 一个是 sensor , 一个是 cpu 的 isp 单元。load3518e 会指定一个 sensor 的参数,指定的 摄像头的型号。这里的地址 , 指的是 sensor 的寄存器的地址, 而不是 cpu 的。

2025-05-14 14:14:43 723

原创 朱老师, 3518e系列,第三季

然后是,Hi3516CV610_SDK_V1.0.1.0/smp/a7_linux/source/mpp/sample/common/sample_comm_venc.c 文件,首先是 Hi3516CV610_SDK_V1.0.1.0/smp/a7_linux/source/mpp/sample/venc/sample_venc.c 文件。修改的文件是,Hi3516CV610_SDK_V1.0.1.0/smp/a7_linux/source/mpp/sample/smp_linux.mak。

2025-05-14 14:14:28 881

原创 朱老师,3518e系列,第二季

首先 从 缓存池中拿一个缓存块,然后 进入VI, 处理后 进入VPSS, 处理后,进入 VENC ,处理完之后, 释放缓存块。它数据量大, 并且兼容 黑白图 效果不好,因为, 红绿蓝, 上来就是颜色,单色数值的不同表示的是亮度的不同。enWDRMode , 指是否 宽动态,宽动态 就是让 图片上的 最暗的地方亮一点,让最亮的地方暗一点。海思的编码 在 枚举定义的时候, 会有 E的标识 , 比如 PAYLOAD_TYPE_E。rawrgb 怎么得到rgb 呢,是从 周围的 rgb 的像素的值 ,算出来的。

2025-05-14 14:14:12 916

原创 朱老师,3518e系列,第一季

传输数据, soc 接收到数据之后,在传送到 flash 中。2、 bl0 将 uboot 拷贝到内存, 然后启动uboot ,hitool 通过向内存的 uboot 发送指令, 将 内存 中的 uboot 拷贝到spi flash .3、 制作的时候,需要考虑到, flash 的块 的大小,需要去数据手册中去找,但是,数据手册不好看。so 如果在编译的时候使用了,那么 在运行的时候,还要再 板子上进行部署 库文件。然后再单独编译的时候, 有可能 单独编译完之后,还不能用, 还需要一些 小操作。

2025-05-14 14:13:50 473

原创 耳机,三段式, 四段式,录音,播放

但我不相信, 没法明 四段式,之前,就没法通过耳机录音。所以我要做的就是 买一个 双头的 三段式 耳机进行测试。我们知道, 虽然 三段式 耳机, 没有录音的功能。原理 他是通过 两个 三段式 ,来解决的此问题。3588 的板子 就是 三段式。首先是 三段式与 四段式 的区别。四段式 ,分为 欧标 与 美标。然后是 三段式 是怎么录音的呢?三段式 是没有 录音的功能的。这也是 PC 机的配置。那么是怎么做到的呢?

2025-04-27 20:52:59 279

原创 candence, 原理图 , 如何对丝印进行搜索。

这种方法是可以的,但是 不能模糊搜索。

2025-04-24 13:32:03 140

原创 i2c 上拉电阻的计算。

问题: 主要是 遇到一个 3588s 的 ov13850 的 调试问题, 顺便看一下 i2c 的上拉电阻的计算问题。2、 如果非要自己算的话,需要 得到 完全的 数字,但是, 看看了看, device 数据手册上,都没说完全。还是 来自己算一下, ov13850 的 i2c 的电容吧, 这是一个 范围值。如果 device 的电流没有找到就要使用 soc 的gpio 口的电流了。原理图上我看是 2.2K的电阻,我看看 能不能对的上。这里 tr 是查数手册得到的, Cb 是假设的,

2025-04-10 14:11:41 224

原创 makefile , CFALGS 与 EXTRA CFLAGS

1 与 CFGLAGS 是一样的, 相当 对 CFLAGS的补充。CFLAGS ,与gcc 有关, 与 头文件有关。然后来看一下 EXTRA CFALGS。作为 CFLAGS 的补充 配合使用的。LDFLAGS , 与 库路径有关。LDLIBS , 与具体的库有关。首先来看一下 CFLAGS。那么二者有什么区别呢?

2025-04-03 18:31:30 245

原创 linux , 进程间 通信, 信号量

1 、 这个程序 并没有 销毁 信号量 , 应该是 系统管理的,只要不销毁,即便程序推出了依然是存在的。共享内存的 id ,与信号量的 id 是不相关的,可以相同, 也可以不同。然后 在得到信号量之后 就不是 sleep 了,而是 对共享内存进行读写。只要 将 共享内存的代码 + 信号量的代码 就可以了。2 、 这个信号量 是通过 key 值 来获取的。然后就是 共享内存 + 信号量 的 内容了。这里 我都不行改他的内容,写的太好了。2 、 只要不销毁,就会一直存在的。来看一下,应用程序。

2025-04-02 14:56:58 311

原创 nodejs 安装 混乱的概念总结。

这是我的实际测试, nodejs , 是通过 apt 安装的, node 是通过n 安装的。yarn 是facebook 开发的,需要再linux 下单独安装。nvim , n 都是 关于nodejs 的版本的管理工具。这两个 都是 安装 javascript 的 软件包的。npm 是 node 或者 nodejs 自带的。nodejs 是 javascript 的解析器。node 就等于 nodejs 了,都是解析器。nade 是 nodejs 的命令行工具。nodejs 与 node 的关系。

2025-03-27 10:13:06 220

原创 linux 动态库, 静态库, 链接, 连接

3 在运行的时候,如果 一个程序运行时 已经用到了一个库,在内存中已经有了,这个时候你又启动了一个程序,也是用到了 一个库函数,这个时候,就直接使用 内存中已经有的函数。2 编译可执行程序 就相当于 ,将 多个.o 文件 合成一个 可执行程序。3 编译需要连接静态库,在板卡上旧不用 在 拷贝 xxx.a 库了。2 在执行的时候,需要将 xxx.lib 拷贝到 板卡上才行。1 在编译的时候,需要连接 动态库,这里不是很理解。1 xxx.a 就是 很多个 .o 的集合。网上的这个资料讲的比较好。

2025-03-21 12:12:31 158

原创 ubuntu , 虚拟机, 局域网

1、 首先对方的电脑 的 要分享的文件夹 要 作此配置。2、 然后是我自己的 电脑 要 做的配置。我要访问 局域网的 其他的网络。或者是 让我 输入 账号密码。

2025-03-05 14:09:34 232

原创 candence 相关的知识

1 首先是 比如我打开了一个 brd 的 pcb . 那么我怎么样确定 一个器件 在封装库中的 标号呢?2 我怎么样 导入 别人的库中的某一个元器件呢?首先是 怎么将别人的库 导入到 自己的 PCB中。那么怎么 样 添加 库文件中的一个 器件呢?这也就涉及到 怎么到处 bom 表格。我实际测试 按照这种方式 是可以的。直接看 bom 表就可以了。

2025-02-25 17:22:05 204

原创 filezilla, ubuntu ,连接问题

如果出现连接不上的情况 ,这种方法可以解决问题。

2025-02-21 11:13:53 127

原创 uboot,s5pv210 , lowlevel_init.s 分析

我知道 gic 是通过 中断号 来区分 不同的中断类型的。2 然后 在异常函数中, 会 修改LR的值---->保存现场寄存器---->跳转到 harndleirq ----->回复现场寄存器---->PC=LR ,4 设置 电平 是边沿触发, 还是电平出发, 这里的出发方式与 外设的 出发方式是不一样的,这里主要指的是 , gic 与cpu 的 触发方式。1 中断发生之后, 硬件会自动完成4步, 保存cpsr----->设置cpsr ---->设置LR----->pc跳转到 异常向量表。

2025-01-21 17:16:13 1067

原创 uboot,s5pv210 , 编译器的使用

并且 他将自己编写的 myboot 烧写到开发板是可以运行的,这说明 在 irom 的程序已经初始化基本的硬件了。这里的 0xD0020010 指的是 uboot 被加载到内存中的地址,这个地址是 数据手册中写的。他是这样的,他会将 myboot, ---->myboot.bin---->myboot.16k.接下来看一下, 在链接之前的 .o 文件的反汇编与 链接之后的 .o 文件的反汇编的区别了。然后是 将 myboot --->myboot.bin----->myboot.16k。

2025-01-16 10:59:49 622

原创 韦老师调试 gpio BUG 笔记 + 自己 rk3562 gpio 调试

1 首先是 之所以 无法 通过 sysfs 控制,是因为 GPIO控制器 配置成了 开漏模式,所以 在echo 高电压的时候,测量的是 1.5V , 这是因为,IO口的电压是不确定的。但是这里有一个疑问: 为什么 sysfs 文件系统,可以设置 高低电平呢,----->估计在实现的源码里也有关于 打开时钟,关闭时钟的操作。可以看到 gpio133 我是配置了 gpios 的 所以不能使用sys 了,gpio134 是我 使用sys 设置的。3 最后发现是 uboot设置了 gpio 的开漏输出。

2025-01-15 21:32:31 329

原创 nvim , neovim , Lua 语法, text object , IDE(3)

如果一句换,没有句号, 但是遇到了一个空行, 那么这个 s 的命令就跟 p 的命令是一样的了。小写的w , 与到非 26个字母就会停下来, 而 W, 则会只遇到空格才这样。句子的选择就是 , 以 句号家+空格,或者 句号+(后面没有子母了)来结尾的。说明 : 了解一下 nvim 中的基本的 文本的类型。1 首先 模块 是以 table 的形式存在的。如果我的光标 在单词的中间,怎么选中整个单词呢?可以看到是以上下的空行 来进行区分的。段落的标志是以空行来进行的标志的。但是是 以空格来进行区分的。

2025-01-14 20:07:57 526

原创 nvim 打造成可用的IDE(2)

我基本上断定是 blankline 的问题了,摸索了一下, indent-blankline 是可以安装成功的,但是依然会有 之前的 无法打开c 文件的状况出现。3 也就是说,只要安装了插件之后,就会自动加载,不管你有没有配置这个插件,应该会有一个默认配置的。关于 nvim 的一个报错。一下这两种方式 更改的都是 命令行模式下的 字体,而不是 在图形界面的终端的字体。网上查了一下, 是关于 , blankline.nvim 插件的原因。1 这个报错的原因是 indent-blankline 的插件的原因。

2025-01-11 11:01:01 966 1

原创 uboot ,s5pv210, start.S分析

也就是说, 你有两种下载方式,一种是下载uboot 社区的代码,还有一种是下载cpu 厂商的 维护的uboot 的代码,这两种方式的 代码下载的地址是不一样的。也正是这样 才有了 对程序的 分段,因为程序要与 数据在一起了,于是 分出了 代码段,rodata 段,data 段, bss 段。这里的 pl0 , pl1 指的是权限的等级,内核只使用了 pl1.内部上拉的话,如果外部高电压,那么是高电平,如果外部是低电平,那么也是一个高电平,因为虽然是低电平,它不回去接到地上去。

2025-01-10 15:05:47 706

原创 摄像头,AWB,白平衡

2 、 是加上sensor 的电流 进入 isp 之后,ISP还会做一个 矫正,就是减去 BLC。3、 OBC 是指 暗区矫正,有专门的一部分,用黑布盖住,不曝光,专门用于矫正,具体原理不去分析。所谓的色温,就是指给一个黑色的物体加热, 随着温度的升高,它发出的颜色,由红色变成了 蓝色。有三种方式,预设的白平衡, 手动的白平衡,以及自动的白平衡。也就是说, 一种颜色 , 在不同的环境的光的照射下, 颜色会出现不一样。4、 如果 这个矫正减的少了,图片就发紫, 如果减的多了,图片就发绿。

2025-01-10 14:17:12 228

原创 关于接线 ,端子, 杜邦线的概念

问题: 客户有个问题,就是 这个接口怎么接线, 因为我也没有 设计过底板 ,所以了解一下 概念。可以看到, 1.0mm , 1.27mm , 2.0mm , 2.54mm 都包括了。好了,我基本上确定了, 原理图上的标号,应该是 他们自己加上去的,可以看到杜邦线的间距 有很多种,基本上都包括了。那么真正的物料的名称,应该是在 bom 单中de。原来这里的 各种H 指的其实是 线间距。好了,在来看一下 3588 的原理图吧。首先是 关于 杜邦线的间距。然后看一下 端子的型号。

2025-01-08 20:48:46 826

原创 uboot ,s5pv210 ,bootm分析

(*(unsigned int *)(0xD0037F98)) 这表示 从这个地址 拿到了 一个值, 然后  (copy_sd_mmc_to_men) 这句表示 准换成 这个类型,前面已经定义过了,这是一个 函数的类型。这句就表示 去调用 三星自己 固化的函数  copy_sd_mmc_to_men 了。这句得到了 os 中的某个字段的内容。

2025-01-03 20:44:31 200

原创 uboot, s5pv210 , main_loop 分析(16)

main_loop 的代码如下: 44 43 void main_loop (void) 42 { 41 #ifndef CONFIG_SYS_HUSH_PARSERE 40 ▎ static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, }; ■ Use of undeclared identifier 'CONFIG_SYS_CBSIZE' 39 ▎ int len; 38 ▎ int

2024-12-25 17:44:08 684

原创 uboot,s5pv210, boar_init_r 的分析(15)

这句 中, dest_addr 指向了 堆的最开始的位置上,可以从画的内存图上看出来, TOTAL_MALLOC_LEN 是这段的大小,然后 malloc_start 是一个函数内部的局部变量。这句中, IRQ_STACK_START_IN是 在 start.s 中定义的全局变量。monitor_flash_len = _end_ofs, 这句中, _end_ofs 是一个 段,就是 内存图中的这个uboot 的大小, monitor_flash_len 它 是一个 ulong 的类型。

2024-12-21 12:01:43 761

原创 uboot ,s5pv210 , board_init_f 的分析(14)

add r1, r1, r9 , 这句话的意思是 ,将r1 的值 加上 搬运的举例, 意思就是, rel 中的这个地址 ,uboot 的代码中是使用到了,现在我把这个地址 改了,加上了 一个 搬运的距离 ,此时已经改了 搬运后的 uboot 代码中 使用的 绝对地址了。这里r0 是在定位 uboot 的代码的内容。str r1, [r0] 这句话 的意思是 ,将 r1 的值 ,写回 r0 的地址, 此时 r1 已经是修改后的地址了,r0 中存放的是 搬运后的 uboot代码中的 使用的 绝对地址。

2024-12-20 16:28:25 657

原创 uboot, s5pv210,连接脚本分析(13)

1、 这里 设置的初始地址 是 0x0000 0000 , 这个在makefile 中是有改动的。3、 这三句 ,其实 是一个 作者 自定义的段, 一般自定义的 才会 自己起一个 标号的名字。2、 这个 __end = . 比较有意思, 与前面的 __start 是对应上的。1、 首先 __rel_dyn_start , 这也是 自定义的段了,没什么好讲的。接下来 就是 去start.S 中去计算 这些 文件中的 段了。1、 首先 MMU是4K对齐的,这个跟 GDB表的大小有关。

2024-12-20 16:27:33 237

原创 uboot, s5pv210 , 位置相关码, 位置无关码(12)

问题说明: 是这样,我在 视频上看到,他在编译 Uboot的时候,是使用的 0x3480 0000 , 但是 再编译 uboot-16k 的时候, 并没有 去改动这个 0x3480 0000 , 但是代码也是 可以运行的。其次, uboot-16K 之所以 可以加载到 0x0000 0000 这个地址, 估计 就是因为没有使用 LDR r0 , =xxxx , 这样的命令的格式。其次, 目前知道的 跟绝对地址有关的 就是 这个 LDR 的指令。所以 了解一下 位置无关码,位置相关码的概念。

2024-12-20 16:26:53 179

原创 uboot ,s5pv210,内存讲解(11) --- 写自己的代码

1、 ldr r0, =_start 这句话的意思是 _start 在 地址 0x3480 0000 的地址处, 这里我不是很理解, 16K的 start 与 uboot 的 start 不是一个 编译地址吗?copy_sd_mmc_to_men copy_bl2 = * (copy_sd_mmc_to_men) (0xD0037F98)) , 这样我也可以理解。

2024-12-20 16:26:07 883

原创 uboot,s5pv210,内存讲解(10)--- device

这里需要 等待 200 ms 但是这里是没有做的,原因是, 这个nop 指令的作用是,当内存从下电到上电后,需要等待200ns ,时钟稳定了,在进行其他操作,但是 我们是开机之后,就一直是上电状态,没有下电过,所以就不用设置了。这要是这一位, demo 程序里, 这一位设置的是0 ,其他的跟上面的配置都是一样的,也就是说虽然我们配置了 pwrconfig 的寄存器,但是 由于这里的配置,我们并没有使用这个 自刷新的指令。然后就是 A11 , RDQS与DM是复用的信号, 所以这里 使用的是 DM,

2024-12-20 16:25:33 935

原创 uboot , s5pv210 , 内存讲解(9)---代码分析1

orr r2, r2, #0x100000 , orr r2 ,r2, #0x1000 , orr r1, r2, #0x3 , 这三句的意思 就是 ,我 把 r2 的第 20 位 , 设置成1 , 将r2 的 第12 位 设置成1 , 将r2 的 第0位,到第3位 设置成 011。我们知道 T 等于 f 分之一, 也就是说 ,133M的 周期就是 , 1除以 133M, 这是一个周期用的时间,那么 7.8us 是多少个周期呢?

2024-12-20 16:25:03 738

原创 uboot ,s5pv210,内存讲解(8)---读写时序(2)

4、它的大致流程是这样的,首先是打开worldline , 然后电容的电 就到了 bitline 上, 然后经过 反馈电路, bitline 上一个电压是1 , 一个电压是0 , 这个时候就不打开 CSL 了,因为不是读,然后 这个1 的bitline 就会 给电容充电,那么 这个bitline 的1 的能量是哪来的呢?2、这里与 预充电 是有区别的,预充电是 对 bitline 的电压的控制,而refresh ,指如果是电容是1 的话, 要定期打开 这个电容,对电容进行充电。这个充电的过程就叫做刷新。

2024-12-20 16:24:17 873

原创 uboot,s5pv210,内存讲解(7)---读写时序

3、正常情况下, 首先发布的是行激活,也叫bank 激活 ,然后同时在地址线上就有了地址,这里地址线 没有画出来,然后 等待 tRCD 的时间,然后开始发送列激活,然后等待 tCAS , 图上是 CL=3,同时在地址线上开始输出列地址。1、 可以看到,首先是 行激活, 然后是经过 RL的延时之后,开始输出数据了,然后 有一个 写操作,然后 经过 WL的延时之后 开始 写数据。4、 但是post ,就是 发送完行地址之后,紧接着 就发送列地址,也就是把列地址提前了,但是等的延时还是这些。

2024-12-20 16:23:46 819

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除