自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 makefile , CFALGS 与 EXTRA CFLAGS

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

2025-04-03 18:31:30 152

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

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

2025-04-02 14:56:58 253

原创 imx6q , lvds0 ,使能

文件 , iTOP-iMX6_android6.0.1/bootable/bootloader/uboot-imx/board/freescale/mx6sabresd/mx6sabresd.c。文件: iTOP-iMX6_android6.0.1/kernel_imx/arch/arm/boot/dts/imx6qdl-sabresd.dtsi。注意: 这个问题的解决是由前提的,就是 lvds1 已经调试好的情况下。我并没有 像这样 去修改 uboot 的 bootargs 参数。首先是 uboot。

2025-04-01 10:27:22 261

原创 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 196

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

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

2025-03-21 12:12:31 119

原创 rk3588, 风扇,读取cpu 温度,负载。

3 然后使用 cat /sys/class/thermal/thermal_zone0/temp 的方式,读取温度,并且存到一个文件中。2 然后开始 通过 top 读取 cpu 负载, 并且将打印信息保存到一个 文件。1 首先开一个 stress , 开始压力测试。问题: 测试 两个风扇,看看哪个降温的效果好。1 stress 的用法。2 top 的用法。

2025-03-21 09:22:30 183

原创 rk3568 以太网eth1 , 定制板 phy调试问题。

phy 问题, 就是 照着 公司底板对硬件就行,完全是硬件问题,不用改 软件。所以 重新焊接了一下, 但是系统启动之后, phy 芯片发热严重,很明显烧了。所以 给客户免费 换了一个 新的phy , 发现可以识别了。后来发现 phy 芯片的焊接问题,有一边 翘起,没有焊上。后来发现 125M的 时钟线 没有接到 核心板,。于是 通过飞线方式 ,接上了 125M 的时钟。问题: 客户定制底板的 phy 网络不通。但是这个问题, 只能客户重新打板了。估计是 时钟 使用飞线的原因。具体的报错信息 ,丢了。

2025-03-19 17:27:34 24

原创 rk3588s , android12 ,root

可以参考我自己的 csdn 上的 rk3588 的root 权限 如何去改动 sdk.就是 这里一定要 对准,因为有好多个 /system/xbin.我就是 严格按照 自己写的 内容 去更改的文件。

2025-03-10 12:00:27 107

原创 rk3568 翼辉系统 烧写。

3、 我这里 遇到一个 问题,就是, 烧写完之后, 网络 无法ping 通, 重新 固化烧写之后,这个问题解决。然后是 重启, 在 uboot 中, 配置 bootcmd ,其实 还是 加载 这个 bin 文件到内存。然后是 通过 filezilla , 将 这个 bin文件 ,传到 emmc 的 固定目录。原来是 新的 base 工程有更新, 所以 之前的Bin 文件应该是不能用了。然后就是 利用 翼辉的 IDE 进行 base 工程的部署。然后就是 , USB+ qt 驱动的部署。

2025-03-08 09:49:47 285

原创 ubuntu , 虚拟机, 局域网

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

2025-03-05 14:09:34 216

原创 candence 相关的知识

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

2025-02-25 17:22:05 162

原创 2k1000LA 使能 nand.

我觉得 ,之所以 再内核中去移植 Yaffs2 文件系统,就是为了 使用这个命令。发现 可能再 龙芯写的 nand 的驱动上有关于 partition 的内容。突然想起来 ,去看了一下 韦东山的关于nand flash 的驱动的视频。背景 : 默认的 发货的镜像 确实 是识别不了 nand 的。但是 我之前 已经写好了文档,因此 拷贝到线上。这里实际上是 我参考了 别人家的 设备树文件。在menuconfig 中使能一下。再menuconfig 中使能一下。但是居然是可以 使用的。

2025-02-24 17:27:48 29

原创 filezilla, ubuntu ,连接问题

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

2025-02-21 11:13:53 112

原创 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 1046

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

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

2025-01-16 10:59:49 596

原创 韦老师调试 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 247

原创 nvim , neovim , Lua 语法, text object

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

2025-01-14 20:07:57 487

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

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

2025-01-11 11:01:01 868

原创 uboot ,s5pv210, start.S分析

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

2025-01-10 15:05:47 665

原创 摄像头,AWB,白平衡

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

2025-01-10 14:17:12 183

原创 rk3568 , buildroot , qt ,使用sqlite, 动态库, 静态库

3 -I (incldue) , 指的是 在搜索头文件的时候, 首先去 /usr/include 目录寻找,如果找不到的话,就去 自己指定的这个目录下寻找。4 -L , 指的是 指定了库的路径,也是首先去默认的 /usr/lib 目录下寻找,如果找不到的话,就去 你指定的牧区去寻找。5 -l (小写L) , 指的是 所连接的文件,既指 动态库,也指静态库, 这两个指定的方式上没有差别,都存在的话,优先选择动态库。然后 在编译 C的 sqlite 应用程序的时候,使用的这个命令。

2025-01-10 14:16:45 1170

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

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

2025-01-08 20:48:46 355

原创 uboot ,s5pv210 ,bootm分析

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

2025-01-03 20:44:31 171

原创 imx6q plus , android6.0 , uboot, 调试 5寸屏, logo显示

经过我的测试 确实是这样的,如果我设置成 5寸屏幕的话,uboot 无法正常显示 logo , 会花屏。注意在uboot 中, 结构体 struct display_info_t 中的 pixclock 不是指的 频率, 而是指的时间,单位是 ps。我是这么做的, 就是 我先让你 在uboot 中显示logo , 然后过一会儿 我在 使能电源的引脚。事实上 ,经过我的测试, 上电白屏的时间缩短了, 但是 还是会有 一瞬间的白屏,关于uboot 的 显示的参数 是在 uboot 的这个文件。

2025-01-03 20:09:25 91

原创 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 667

原创 rk3588 android12 root

我在 串口上 实际上 是可以 使用 su root 命令 进入 root 的,但是 使用 root check apk 检测的时候却通不过。然后是这个文件, system/core/libcutils/fs_config.cpp。然后是 这个文件 kernel-5.10/security/commoncap.c。然后是这个文件 , system/core/init/selinux.cpp。然后 是这个文件 system/extras/su/su.cpp。好 , 接下来 就是 我自己的 无脑操作了。

2024-12-25 17:11:51 690

原创 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 730

原创 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 608

原创 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 224

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

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

2024-12-20 16:26:53 156

原创 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 833

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

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

2024-12-20 16:25:33 904

原创 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 705

原创 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 805

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

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

2024-12-20 16:23:46 791

原创 uboot,s5pv210,内存讲解(6)--有限状态机

这个数值也是可以选择的,当时DDR2的时候,延迟反而可以选择更长了,这也说明了,虽然读写的速度在加快,但是芯片内部的半导体的速度,并没有提高多少。3、 这里的自我刷新,指的是,每隔一定的时间,自己刷新,不用DMC发命令退出,它就一直刷新,这是在 掉电模式下,DMC关闭的状态下使用的,一般都是使用 刷新的命令进行干涉。1、 在内存 与DMC之间 有很多的控制线, 比如,CKE,CS,RAS,CAS,WE, 内存通过这些线的 高低电平, 来解码出 ,是什么指令。疑问:之前不是说,地址是间隔存储的吗?

2024-12-20 16:23:27 805

原创 uboot ,s5pv210 , 内存讲解(5)

2、预充电完成之后,就是 读取阶段了, 以最右边的 小电容为例 ,首先 当这个电容的 wordline 选通之后, 这个bitline 的电压上升一点点, 另一个查分的 bitline 的电压不变,但是由于 有 sensing circuit 的存在,这是一个p 管 + n管, 然后慢慢的 一个bitline 上的电压变成了 VCC,另一个bitline 上的电压变成了 0 ,然后 感知电路 将1 输出到 数据线上。9、可以看到 他只是 提高了 数据的带宽,就是得到一个 地址之后,输出了 2个地址的内容。

2024-12-20 16:22:31 928

原创 uboot , s5pv210 , 内存讲解(4)

3、 它的地址是这么排列的, 第一个device 的第一个bank 是 0x01 , 第二个device 的 第一个bank 是0x02 , 第三个device 的第一个bank 是 0x03 ,第四个device 的第一个bank 是 0x04,第一个device 的第二个bank 是 0x04 , 第二个device 的 第二个bank 是0x05 , 第三个device 的第二个bank 是 0x06 ,第四个device 的第二个bank 是 0x07,1、这是使用了 4片的 内存。

2024-12-20 16:22:08 222

原创 uboot, s5pv210, 内存讲解(3)

也就是 2的28次方, 再乘以 2的2次方。2 、 这里有两个延迟, 一个是 从时钟输入,到自己产生时钟,是有一个延迟的,第二个是 自己的时钟的上升沿 开始输出数据,但是到 数据线上真正有数据也是有一个延时的。2 但是 使用 同步的话,就是加一个时钟线 ,就有更强的适应性,大家都遵守时钟的速度,时钟的速度 由最低的哪个决定,如果大家 想提高速度,那么提高时钟的频率就行了。1 在SDRAM 中,数据是这样的,时钟的上升沿,开始发出数据,然后得等一小会,等数据稳定了,也就是 下降沿的时候 , 去采集数据。

2024-12-20 16:21:04 788

原创 uboot , s5pv210 , 内存讲解(2)

两个channel 加起来最大是 4G,一个channel 最大也是4G, 一个channel 的一个rank 最大也是4G, 这只能说明一个问题,就是 这两个channel ,或者说,一个channel 的两个bank 地址上是有重叠的,是可以设置的,我猜 ,channel1 与 channel2 的地址线,再芯片内部是重叠的,只不过可以设置成分开的。我有点明白了,视频上页讲了, 如果使用两个 rank 的话,地址线与数据线 都是共用的,只是片选不一样,也就是 软件上进行设置,将总的地址,分开了。

2024-12-20 09:14:40 695

空空如也

空空如也

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

TA关注的人

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