您尚未登录。

#1 Re: 全志 SOC » rtl8723ds高并发时死锁有人遇到过吗 » 2023-05-17 10:20:19

最终没能完美解决。我更换了wifi模块,使用ap6255

#2 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 土家造-手搓sip芯片 » 2022-11-04 12:57:34

博通的WiFi芯片很多都是WCSP封装的,非常小,所以当年很多手机上用的博通WiFi SiP芯片都是这样做的。
比如三星、苹果。都用这种SiP WiFi。主要代表的封装厂有三星电机、村田、环旭等等。。

#3 Re: 司徒开源 » 开源精神值得敬佩,但是你司徒公开po 解FC3000的加密芯片就是可耻,做技术要有底线 » 2022-11-01 16:00:03

不使用secureboot 和基于fuse的硬加密就要做好被干的准备

虽然f1c200s性能足够,但我宁愿多花钱用全志r328,就是因为他有secureboot和硬加密。

#4 Re: 全志 SOC » f1c100s tina想要通过TF升级应用程序有什么好的办法吗? » 2022-10-19 16:39:03

linux上对正在运行的程序进行覆盖,正确的做法是 mv 到tmp,然后再 cp 过去。

#5 Re: 全志 SOC » 请问t113如何看双核是否启动成功了 » 2022-10-14 11:55:09

谁跟你说的 cat /proc/cpuinfo 不准??这一定是准的。

另外就是dmesg里面看,内核引导会有 bring up xxx CPUs 字样

#6 Re: 全志 SOC » T113-s3 spi-nand 启动 » 2022-10-10 10:54:52

大佬可以帮忙测试下 主线spinand+ubifs的性能吗?
我在r328用全志的闭源nand驱动测试结果是这样的。性能非常垃。

下面是记录

------------------------------------------------------------
sunxi nand driver
全志的私有 nand 驱动,NFTL 层将nand转换成块设备

测试写 ~3.2MB/s

time dd if=/dev/zero of=16mb bs=64k count=256 conv=fsync
256+0 records in
256+0 records out
real    0m 5.01s
user    0m 0.00s
sys     0m 0.13s

------------------------------------------------------------
测试读 ~9MB/s

dd if=/dev/urandom of=16mb bs=64k count=256 conv=fsync
重启系统后
time dd if=16mb of=/dev/null bs=64k count=256
256+0 records in
256+0 records out
real    0m 1.77s
user    0m 0.00s
sys     0m 0.06s

#9 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2022-07-13 15:57:16

nice 说:

@mengxp
感觉很利害,有没有详细的分享内容?

整个流程就是那些内容了
为了实现这些,我抛弃了全志的烧录工具链,自己写的bootloader和量产工具。

#14 Re: 全志 SOC » 有人熟悉OPENWRT WIFI和局域网吗? » 2022-05-11 11:32:20

@lonerwolf
你如果是作为路由,就不应该使用桥接,而是wan lan分开,然后dnsmasq绑定在lan上
你如果是作为AP,就使用桥接,但不应该启用dnsmasq(作为AP他就是个交换机而已)。

#15 Re: 全志 SOC » 有人熟悉OPENWRT WIFI和局域网吗? » 2022-05-10 14:53:19

网线的另一端有dhcp?
这其实很好调试你在wifi口tcpdump抓包分析下。

#16 Re: 全志 SOC » T113-s3 spi-nand 启动 » 2022-05-10 10:28:51

大佬威武,,吊翻了
mark

#17 Re: RISC-V » 与 ARM 相比,Risc-V 有多好? » 2022-05-05 10:06:07

事实上riscV仅仅是指令集开源而已,你需要自己去实现cpu架构,有一些开源的riscv核,但是这些开源核心是否可靠?放在fpga上跑跑还行,出事了改一改。

那代码还要布局布线,这个布线在fpga上是自动的,但是asic不是,他是人工布线的。就好比你pcb布线一样。你想象一下给asic布线,十几个层,过孔还非常小。。

开源仅仅停留在指令集、软核层面。固核硬核通常都是要收费的,但肯定比arm少很多。

像平头哥、芯来之类的厂子,他们提供的就是布局布线,甚至是工艺优化之后的硬核。你是可以直接拿去用的,就像买了一个核心板模块一样

#18 Re: NXP i.MX6UL/6ULL » imx6ull如何才能实现稳定可靠的快速启动不用uboot方式 » 2022-05-05 09:54:13

首先imx6系列的ddr是由bootrom配合cfg完成的,所以配置ddr这个步骤是基本不用操心。
其次imx6支持映射qspi,所以从qspi读数据基本就是memcpy。
所以imx6平台自己写个bootloader非常简单。
把内核、DTB memcpy 到 DDR,然后libfdt修改cmdline/memregion/memreserve,然后跳转内核。

#19 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 是时候告别CSDN了! » 2022-05-03 21:06:35

以前为了赚csdn那个下载分,我上传了超多优质资源,然后分确实能赚很多用都用不完。大概有几千分。
后来csdn可能意识到了一个问题:有些人分多的用不完,然后踏马的把下载需要用多少分改成了动态的。
下个资料花50分,就这样,我的分,很快用完了,现在没分了。

#22 Re: 全志 SOC » 怎么判断v3s已经是硬解 » 2022-04-22 09:36:41

top显示每个线程的cpu占用率,如果线程没有名字,改源代码,给每个线程加个名字。

#23 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2022-04-19 10:23:13

我自己做了一份,用了全志的 secureboot,crypto engine
首先需要secureboot,来禁止未授权的secure world代码执行
flash上存储的 kernel initramfs 是用aesctr128加密的
bootloader执行过程会读取并使用efuse中的ssk对 kernel initramfs 镜像进行解密
这样就保证了 kernel initramfs 的保密性,这两个镜像是加密的,没有密钥无法解密

密钥是烧录在efuse上的,设置了readprotect writeprotect,无法被读出,只有crypto engine能够调用解密
而crypto engine只有secure world的代码有权限访问
而secure world代码是被代码签名的,没有签名不能在cpu上执行
不能在cpu上执行,就无法解密镜像。

最终实现的性能参考
QSPI nor flash
kernel+initramfs 10M
bootloader读取、解密、哈希 整个流程只需要 380毫秒。

#25 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 这事怎么回事,立创商城ATMEGA328P-AU都卖到361了? » 2022-04-12 09:50:18

stm32f429nih6 这型号前几天1800块
这年头,谁还用这些进口mcu,家里是有矿吗

#26 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 一枚萌新瑟瑟发抖,发起求救! » 2022-04-08 12:56:54

zhang235hai 说:

搞单片机嵌入式沉淀的时间要比较长,搞it互联网来钱会比较快一点

互联网现在更卷,大厂都在开人,留的岗位都是给应届生的,解决ZF的需求,实际上他们也不想要应届生。

这东西还是要自己摸索,别人走过的路你复制不了。

多听别人的建议,但也要有自己的想法。

#27 Re: 全志 SOC » f1c200快速启动验证研究 » 2022-04-07 22:16:03

逻辑分析仪分析,每隔一个字节,每隔一个burst,都会有停顿,不会优化了,感觉没什么能优化的了。应该是DMA和FIFO的问题,
频率计看了下,100M SPI频率,频率计测1秒周期得等效工作频率是 ~44MHz

实际跑代码测试速率 ~22.1MB/s

4MB cost 181ms
4MB 64KB slice cost 183ms
4MB 128KB slice cost 183ms
4MB 256KB slice cost 182ms
4MB 512KB slice cost 182ms

#28 Re: 全志 SOC » f1c200快速启动验证研究 » 2022-04-07 15:33:52

shaoxi2010 说:

f1c不是说控制器没有quad模式么

我用的r328

#29 Re: 全志 SOC » f1c200快速启动验证研究 » 2022-04-07 13:38:00

调整了dma burst length qread速度达到24MB/s 但距离 50MB/s 仍然遥远。

#30 Re: 全志 SOC » [V3s] WIFI速度传输慢 » 2022-04-07 13:35:37

@abnerl

我这是 4bit 50MHz
没啥需要设置的了,天线我都是ipex座子直连的模块输出。

再要不你检查下模块晶振吧,需要频率计。
我之前给ap6335调优调整了晶振负载电容,有明显改善,参考数据

37.4MHz 12pF 37.39802MHz
37.4MHz 22pF 37.39712MHz
37.4MHz 6pF  37.39949MHz  37.39955MHz

调整 37.4MHz 晶振后 AP6335 WiFi 传输速率从 11.5MB/s 提升到了 14.4MB/s

#31 Re: 全志 SOC » [V3s] WIFI速度传输慢 » 2022-04-07 11:28:11

abnerl 说:

@小李sy
最终WiFi速度多少,我测试AP6212才12Mbps左右,最高不超15,手册宣称72mbps

AP6212 72Mbps 链路的时候下载速度有6MB/s,也就是大概  48Mbps
RTL8723 72Mbps 链路时也差不多,150Mbps (HT40)链路的话,有12MB/s

#32 Re: 全志 SOC » f1c200快速启动验证研究 » 2022-04-06 10:58:20

我这 spi nor 测试 dread qread dma 性能都是 16MB/s 左右和楼主差不多。
但是我想这块肯定有点问题,dual和quad速度不应该一样,应该是倍数关系。
另外性能应该不止这些。按100MHz时钟算,dread qread读应该有 25MB/s 或 50MB/s。

#34 Re: 全志 SOC » Linux时间戳到2038年后怎办? » 2022-04-02 11:45:05

kernel 5.1版本新增了 time64 syscall
所以你需要升级到 5.1内核,然后用户态需要musl 1.2+ or glibc 2.32+

如果你说你的sdk没有kernel5.1 那你只能自己想办法,要么换芯片,要么自己给kernel打补丁

#35 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » AP6330连接速率问题(ShortGI) » 2022-03-16 13:01:40

mengxp
回复: 0

目前使用AP6330遇到一个问题,我使用hostapd(v2.9)创建AP,无论是启用SHORT-GI还是不启用,客户端看到的最大速率都是65Mbps。而且通过抓包发现beacon报告的 HTcap 字段的 short gi 20M enabled 比特位是0。

看datasheet上如果是LONG-GI最大速率是65,如果是SHORT-GI应该是72.2Mbps,现在好像是启用不了SHORT-GI,这问题有人遇到过吗?

#37 Re: 全志 SOC » 螃蟹wifi AP模式压测工具/Bug复现工具源代码 » 2022-02-28 20:17:07

AP6212 做同样的测试完全没有问题,
所以说螃蟹是垃圾,几年了一个bug修不掉。

Mem: 25016K used, 95676K free, 24K shrd, 0K buff, 15072K cached
CPU:  0.0% usr 10.0% sys  0.0% nic 89.8% idle  0.0% io  0.0% irq  0.1% sirq
Load average: 1.23 1.24 0.89 1/69 937
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
  868     2 root     SW       0  0.0   1  8.7 [dhd_dpc]
  934   829 root     S    17864 14.7   1  1.2 ./udpflood 192.168.20.100 1234 5
  937   829 root     R     2668  2.2   1  0.1 top
  894     1 root     S     3164  2.6   1  0.0 hostapd -B /etc/hostapd.conf
    1     0 root     S     2668  2.2   0  0.0 init
  829     1 root     S     2668  2.2   1  0.0 -/bin/sh
  820     1 root     S     2668  2.2   1  0.0 syslogd -O /tmp/syslog.txt
  855     1 root     S     2500  2.0   0  0.0 dbus-daemon --system
  857     1 root     S     2160  1.7   0  0.0 hcid -x -m 8192 -f /usr/etc/hcid.c
  869     2 root     SW       0  0.0   1  0.0 [dhd_rxf]
   10     2 root     SW       0  0.0   0  0.0 [migration/0]
  283     2 root     SW       0  0.0   1  0.0 [kworker/1:1]
  758     2 root     SW       0  0.0   1  0.0 [kworker/u4:4]
    7     2 root     SW       0  0.0   1  0.0 [rcu_preempt]
  599     2 root     SW       0  0.0   0  0.0 [kworker/0:1]
  149     2 root     SW       0  0.0   1  0.0 [kworker/u4:2]
    3     2 root     SW       0  0.0   0  0.0 [ksoftirqd/0]
  806     2 root     DW       0  0.0   0  0.0 [usb-hardware-sc]
    2     0 root     SW       0  0.0   0  0.0 [kthreadd]
send iter 9800ot     SW       0  0.0   0  0.0 [kworker/0:0]
send iter 9900
send iter 10000
send iter 10100
send iter 10200
send iter 10300
send iter 10400
send iter 10500
send iter 10600
send iter 10700
send iter 10800
send iter 10900

#39 全志 SOC » 全志crypto engine 使用ssk作为key的疑惑 » 2022-02-26 12:36:19

mengxp
回复: 0

有人研究过 使用crypto engine 使用SSK做 AES 加密吗?
我测试写入SSK "1234567890ABCDEF",然后用这个SSK作为KEY加密一个消息
再使用输入key  "1234567890ABCDEF",加密同样一个消息
两个结果不一样?why?

其中输入key的测试是没有问题的,使用标准 test vector测试过,结果没有问题

难道 CE 在使用SSK加密前对key做了某种黑盒变换吗?

#40 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » lvgl v8.1 VS2017 win32 移植工程 » 2022-02-12 19:33:27

mengxp
回复: 0

官方是有 win32 port 项目的,但是说实话,那个工程,配置的乱七八糟的。我这vs2017折腾半天编译不了,还是自己重建一个工程吧

步骤
1.建立VS2017工程,创建了一个简单的 Win32 Native 窗口
2.复制 lv_demos lvgl 的源代码 (此处是官方 8.1 的),没有做任何文件修改,仅删掉了一些觉得用不上的目录和组件(sdl, gpu等)
3.VS工程新建筛选器 lvgl lv_demos,进入对应的目录,搜索 *.c 文件直接拖拽到了 VS 工程筛选器 lvgl 和 lv_demos 中
4.创建 lvgl 配置文件 lv_conf.h,是根据 lv_conf_template.h 修改而来
5.创建 lv_demos 配置文件 lv_demo_conf.h,是根据 lv_demo_conf_template.h 修改而来
6.新增了显示驱动(根据fbdev修改而来)和输入设备驱动(根据win32drv修改而来),都在 main.c 中了
  其实是可以直接使用 win32drv 的,但是自己做一下,更能加强了解和学习
7.编译好的 exe 在 release 目录

评价
1.代码段仅 360K 体积非常优秀,没包含图像解码器,使用的是 bitmap,所以 exe 文件大部分数据都是资源数据。
2.移植简单,配置方便,没有遇到编译错误,仅报一些 warning。
3.目前我对lvgl了解不多,仅跑了demo,不知道构建界面的难度。但从运行效果来看无疑是嵌入式设备首选的界面库

mengxp 2022/2/12

lvgldemo.png
lvglui.zip

#41 Re: 全志 SOC » 开源一个6000行的2D矢量图形库libcg,零依赖,API接口类似cairo,在某些场景可以代替cairo,特别适合裸奔场景。 » 2022-02-09 10:14:04

程序本身就使用了freetype的情况下那个 swft是不是就可以不要了,移植一下cg使用freetype的内部函数?

#42 Re: 全志 SOC » 螃蟹wifi AP模式压测工具/Bug复现工具源代码 » 2022-01-29 09:44:57

拉轰的脚踏车 说:

没有苹果,安卓可以测试吗?

可以试一下啊,这个bug的本质就是当STA处于SLEEP时。螃蟹的AP逻辑有点问题。
安卓的wifi应该也有SLEEP功能的,只是触发的机制可能和苹果不同。

#43 全志 SOC » 螃蟹wifi AP模式压测工具/Bug复现工具源代码 » 2022-01-28 20:27:15

mengxp
回复: 3

工具源代码下载 udpflood.zip

Realtek Wifi module AP 功能压力测试工具
mengxp work & test 2022/01

Bug 描述
当满足如下 3 个条件时,若有大流量从 AP 发往 iPhone
有概率导致内核线程 ksoftirqd & RTWHALXT 占满 CPU,并有可能导致系统停止响应
1.realtek wifi 工作在 AP 模式
2.iPhone 作为 STA 接入
3.iPhone wifi 进入 SLEEP 状态(POWERSAVE)

Buf 复现步骤
1.realtek 板端建立 wifi AP,并建立 DHCP 服务器(可选,可使用静态IP)
2.iphone 连接该 AP(如果没有 DHCP 需要手动配置 IP)
3.(!重要!)iphone 进入到 设置-蓝牙 界面 (由于 2.4G 天线复用冲突,蓝牙 scan 会导致 Wifi 频繁进入 SLEEP)
4.realtek 板端运行该工具持续向 iPhone 发送 UDP 报文,间隔可修改
  例: udpflood 192.168.20.100 1234 5
  其中 192.168.20.100 是 iphone 的 IP,1234是端口号,可任意输入,5 是间隔 5 毫秒发一次报文
5.观察板端是否有卡住的情况。
  或可将 udpflood 置于后台运行,然后使用命令 top 观察 CPU 占用率

Bug 分析
当 STA 进入 SLEEP 模式时,realtek 不能正确处理发包队列,导致发包线程占满 CPU

目前我在 rtl8723ds 上测试,bug 复现率 100%,我使用的 wifi 驱动版本有
1.R328 SDK中的 v5.6.5_31752.20181221_COEX20181130-2e2e
2.R329 SDK中的 v5.10.1-26-ga10bc0b8b.20200617_COEX20200103-3535
3.rtl8723DS_WiFi_linux_v5.13.5-29-g0dbf6713f.20210604_COEX20210106-3b3b.tar.gz
上述3个版本全部存在该问题。

bug 日志摘抄
sending 1440 bytes every 5 ms via 2 threads
thread bind to cpu 0
thread bind to cpu 1
send iter 100
send iter 200
send iter 300
[  314.114167] INFO: rcu_preempt self-detected stall on CPU
[  314.120151]  1-...: (3000 ticks this GP) idle=551/140000000000001/0 softirq=1858/1858 fqs=0
[  314.129626]   (t=60000 jiffies g=280 c=279 q=1)
[  314.134720] rcu_preempt kthread starved for 60000 jiffies! g280 c279 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1
[  397.830251] INFO: rcu_preempt detected stalls on CPUs/tasks:
[  397.838564]  0-...: (1 GPs behind) idle=7db/140000000000000/0 softirq=1396/1397 fqs=23
[  397.838577]  (detected by 1, t=60002 jiffies, g=281, c=280, q=3)
[  397.838623] rcu_preempt kthread starved for 2006 jiffies! g281 c280 f0x0 RCU_GP_WAIT_FQS(3) ->state=0x1

Mem: 22104K used, 97400K free, 16K shrd, 3668K buff, 6316K cached
CPU:  0.0% usr 95.2% sys  0.0% nic  0.0% idle  0.0% io  0.0% irq  4.7% sirq
Load average: 8.85 6.44 2.98 5/63 899
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
   15     2 root     RW       0  0.0   1 50.0 [ksoftirqd/1]
  861     2 root     RW       0  0.0   0 49.9 [RTWHALXT]


欢迎大家在螃蟹其他型号芯片上测试并反馈测试结果
工具源代码下载 udpflood.zip

#44 Re: 全志 SOC » rtl8723ds高并发时死锁有人遇到过吗 » 2022-01-15 20:18:21

已初步确定是螃蟹的AP模式逻辑问题,并非死锁。


测试环境
1.rtl8723ds (AP) <-----> iphone (STA)


触发条件
1.作为AP模式
2.正在发送数据
3.对方STA进入SLEEP模式,有概率触发该bug。



问题描述
1.hal\rtl8723d\sdio\rtl8723ds_xmit.c 中 xmit_xmitframes 函数
#ifdef CONFIG_AP_MODE
                if (MLME_IS_AP(padapter) || MLME_IS_MESH(padapter)) {
                    if ((pxmitframe->attrib.psta->state & WIFI_SLEEP_STATE) &&
                        (pxmitframe->attrib.triggered == 0)) {
                        RTW_INFO("%s: one not triggered pkt in queue when this STA sleep, break and goto next sta\n", __func__);
                        break;
                    }
                }
#endif

这段代码意图其实是符合 80211 中的传统省电模式 (Legacy Power Save)

传统省电模式 (Legacy Power Save)
假设某个时间STA进入sleep,它通过发送数据帧或null-date帧来告诉AP我进入省电了
AP收到这个帧后就不发数据帧给处于省电模式下的STA了。
STA会在下一个 DITM period wake up,并收到AP的beacon
在beacon 中DTIM 信息元素会告诉 STA,你sleep的时候有发你的数据,我替你存下了,快来取

但实际工作的时候不知道为什么驱动会反复的触发发送信号量,然后反复的进入这个流程,导致 RTWHALXT 线程占满CPU。
而且影响到了正常的收发逻辑。




暂时解决方案
注释掉上述 break; 语句,逻辑变更为,即使 STA 进入休眠仍然发送,STA收不到就收不到,该帧就算丢弃了。
实验发现也并没有造成多大的通讯延迟影响。


后续解决方案
联系模块fae尝试解决。但我不认为模块fae方面有能力解决这个问题。(我是普通用户不是VIP)

#45 Re: 全志 SOC » rtl8723ds高并发时死锁有人遇到过吗 » 2022-01-14 10:40:28

shaoxi2010 说:

有没有在调频,之前我遇到过CPU降频时,A33出现过类似现象。将CPU调度器调为performance就好了。

我看了下 我这个启动后默认就是 performance

root@r328:/# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
root@r328:/# cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
performance

#46 全志 SOC » rtl8723ds高并发时死锁有人遇到过吗 » 2022-01-13 20:46:12

mengxp
回复: 7

目前在r328平台上使用rtl8723ds高并发流量时内核死锁
具体表现是 top 监控到 RTWHALXT 内核线程占用 CPU 50% (r328其中一个核心)
随后系统死掉,shell会弹出提示
[  274.772512] INFO: rcu_sched self-detected stall on CPU
[  274.778301]  1-...: (1 GPs behind) idle=6cb/140000000000001/0 softirq=2804/2805 fqs=7499
[  274.787477]   (t=15000 jiffies g=1214 c=1213 q=179)
[  295.912599] INFO: rcu_sched detected expedited stalls on CPUs/tasks: { 1-... } 15329 jiffies s: 1 root: 0x2/.
[  295.923762] blocking rcu_node structures:
只弹出这些,没有列出更多内容。
shell不再响应,系统呈现内核死锁状态。

尝试过使用不同版本的rtl8723ds驱动
1.R328 SDK中的 v5.6.5_31752.20181221_COEX20181130-2e2e
2.R329 SDK中的 v5.10.1-26-ga10bc0b8b.20200617_COEX20200103-3535
3.rtl8723DS_WiFi_linux_v5.13.5-29-g0dbf6713f.20210604_COEX20210106-3b3b.tar.gz  https://whycan.com/t_7504.html 这里下载到的

使用这些驱动都存在上述问题。由于是死锁问题,我尝试关闭一个CPU核心
echo 0 > /sys/devices/system/cpu/cpu1/online

这样关闭核心后再测试就不再死锁了。但是这不是个长久之计啊,
请问有人遇到过这个问题吗?该如何解决??

RTWHALTX.png

#47 Re: 8051/STC8/AT89C51/N76E003 » 开源一个USB切换器 » 2022-01-01 14:20:55

这不差分,没等长,没法high speed吧

#48 Re: 全志 SOC » 求助各位大佬,我的车机最近变砖了,用的全志t7的芯片 » 2021-12-26 22:01:11

熄火后15分钟内BCM一定会给他断电的,不可能耗光电瓶,如果能耗光电那太垃圾了
另外一般按住按钮10秒会强制重启

#50 Re: 全志 SOC » 请教下F1c200s/V3s拆焊温度 » 2021-12-14 17:16:37

给芯片四周涂助焊剂,然后300度开吹,如果是无铅 300度应该是吹不下来。
还要看板子多大。板子越大他散热就越快,你就需要越高的温度。

吹个1分钟,你用镊子试一下能不能推动芯片旁边的电容,能推动就是锡化掉了
然后再推推芯片
推不动就加点温度。

一般不超过350度都能搞定。
350度搞不定可能是风枪温度不准,或者板子太大了。一般嵌入式小板都不会有问题的,

板子超过10x10可能要用到预热台。
芯片超过20x20可能需要返修台。

可以先拿废板练练。

#51 Re: 全志 SOC » V3S+ST7789运行demo卡顿严重,可能是哪些原因 » 2021-12-13 09:41:30

杜邦线接头质量问题。
没法用杜邦线的,必须排线。

#52 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 为什么示波器测量不了差分信号? » 2021-12-09 13:07:03

liyucai 说:

示波器的接地夹子内部是接到 电源地 的,所以必须接到被测电路的 地 上。这是不能乱接的,乱接很可能造成设备损坏。
有些示波器可以做数学运算,比方将两个通道的信号相减,就能看到差分转为单端的信号。

不是必须接地,主要看你被测的电路,像我们一般都不测交流电,都是测的单板上数字信号,单板的地根本不与大地连接
而示波器探头地是与大地连接的,此时如果你把与大地连接的探头地连接到单板的数字地上,可能打火!有100多伏电压
还得是具体分析,我一般测量前都用表测一下两个地之间电压,如果有电压就上隔离。

#53 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 为什么示波器测量不了差分信号? » 2021-12-09 11:28:32

可以试一下示波器电源插头不接地(插线板用两脚的)
但我记得这样用好像有啥风险来着,我之前是买了个1比1环牛,做了个隔离变压器。

#54 Re: 全志 SOC » 全志r328快速启动实现(上电1.5秒进Shell) » 2021-12-09 11:00:48

memory 说:

①启用了secureboot,给bootloader做了toc0签名
②主板焊接了rtl8723ds sdio模块
启动只需要1.5秒!!

请教楼主,这是因为①,还是因为②?

secureboot会更耗时因为他需要校验代码有效性

启动时间比上次实验更短了应该是因为②
那个mmc驱动会probe设备,如果找不到设备他的超时等待更长一些吧(但说实话我觉得差这么多有点离谱)

#55 Re: 全志 SOC » 全志r328快速启动实现(上电1.5秒进Shell) » 2021-12-09 09:05:51

shaoxi2010 说:

是我的描述不太清楚,一个是我想知道你打印里面有个brom时间,这个是怎么算出来的?第二就是bootloader拉起内核时间是多少呢,想看下和uboot相比有多大的优势。

brom中会初始化ARM核中的Timer,后面可以直接取值拿到CPU上电时间。
Bootloader拉起内核的时间可以看日志
Load Kernel那里是从norflash读取
boot kernel那里是开始跳转

其实主要的问题不是uboot,毕竟uboot可以裁剪。
最大的问题是 boot0 尤其是 sboot 消耗了太多的时间,有0.8秒左右。
而这个东西是不开源的,你没法优化他。

#56 Re: 全志 SOC » 全志r328快速启动实现(上电1.5秒进Shell) » 2021-12-08 22:00:58

shaoxi2010 说:

太强了,想问下重写后bootloader花了多少时间呢?

重写bootloader花多少时间吗?懂原理的话也不是很费时间,就一个星期就研究出来了……

netwp 说:

大佬,请教imx6ull是如何做到1.67启动,太牛了,感觉1.6s也就能起个uboot

需要自己写bootloader。用uboot也行就别调用太多无关的命令和等待。

#57 全志 SOC » 全志r328快速启动实现(上电1.5秒进Shell) » 2021-12-08 13:12:20

mengxp
回复: 12

----------------------------------------------------
晚上更新
启用了secureboot,给bootloader做了toc0签名
主板焊接了rtl8723ds sdio模块
启动只需要1.5秒!!比上午的实验还少了0.5秒~
也许是因为上午实验时没有焊接sdio模块,导致mmc部分初始化等待比较久。

下面是securecrt带时间戳的串口日志

[22-06-09.354]BOOTROM elapsed 0 ms (118 ticks)
[22-06-09.354]
[22-06-09.354]
[22-06-09.354]-Hardcore Boot-
[22-06-09.354]
[22-06-09.354]Rev 13, Build Dec  8 2021 21:53:43
[22-06-09.354]mengxp works 2021
[22-06-09.354]
[22-06-09.369]CPU:  Allwinner R328-S3
[22-06-09.428]DRAM: DDR3 128 MB, 792 MHz
[22-06-09.428]NOR:  C22018(JEDEC ID)
[22-06-09.428]
[22-06-09.428]> Setup MMU
[22-06-09.428]> Load Optee
[22-06-09.428]> Load DeviceTree
[22-06-09.428]> Load Kernel
[22-06-09.780]> Open FDT
[22-06-09.781]> Setup FDT
[22-06-09.781]> Boot kernel
[22-06-09.818]Uncompressing Linux... done, booting the kernel.
[22-06-09.818][    0.000000] Booting Linux on physical CPU 0x0
[22-06-09.818][    0.000000] Linux version 4.9.118 (meng@u14aw) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #5 SMP Wed Dec 8 12:55:35 CST 2021
[22-06-09.833][    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[22-06-09.833][    0.000000] CPU: div instructions available: patching division code
[22-06-09.850][    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[22-06-09.850][    0.000000] OF: fdt:Machine model: sun8iw18
[22-06-09.885][    0.000000] bootconsole [earlycon0] enabled
[22-06-09.901][    0.001130] /cpus/cpu@0 missing clock-frequency property
[22-06-09.901][    0.007077] /cpus/cpu@1 missing clock-frequency property
[22-06-10.199][    0.288531] mmc:failed to get gpios
[22-06-10.234][    0.346803] sunxi_get_str_of_property()1561 - failed to get the string of propname led_regulator!
[22-06-10.246][    0.361193] sunxi-mmc sdc1: smc 0 p1 err, cmd 8, RTO !!
[22-06-10.290][    0.394617] sunxi-rtc rtc: hctosys: unable to read the hardware clock
[22-06-10.290]
[22-06-10.684]
[22-06-10.849]Starting fstab.
[22-06-10.890]Starting syslogd.
[22-06-10.890]Starting lo.
[22-06-10.890]
[22-06-10.890]Processing /etc/profile...
[22-06-10.902]root@r328:/# 
[22-06-10.903]root@r328:/# 

下面是dmesg的日志

root@r328:/# dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.9.118 (meng@u14aw) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #5 SMP Wed Dec 8 12:55:35 CST 2021
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt:Machine model: sun8iw18
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat c05a68c0, node_mem_map c7ef8000
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv0.2 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] percpu: Embedded 13 pages/cpu @c7eb5000 s21196 r8192 d23860 u53248
[    0.000000] pcpu-alloc: s21196 r8192 d23860 u53248 alloc=13*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: earlyprintk=sunxi-uart,0x05000000 console=ttyS0,115200 printk.time=1 quiet mtdparts=spi0.0:384k(uboot),64k(env),64k(dtb),7168k(kernel),8704k(rootfs) root=/dev/mtdblock4 rootfstype=cramfs rootwait
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 120580K/131072K available (4185K kernel code, 165K rwdata, 1012K rodata, 252K init, 168K bss, 10492K reserved, 0K cma-reserved, 0K highmem)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff800000   ( 880 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc041e7ec   (4186 kB)
[    0.000000]       .init : 0xc053f000 - 0xc057e000   ( 252 kB)
[    0.000000]       .data : 0xc057e000 - 0xc05a7738   ( 166 kB)
[    0.000000]        .bss : 0xc05a7738 - 0xc05d17f8   ( 169 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 32.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.000000] arm_arch_timer: Architected cp15 timer(s) running at 24.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns
[    0.000005] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns
[    0.000014] Switching to timer-based delay loop, resolution 41ns
[    0.000119] Console: colour dummy device 80x30
[    0.000135] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=240000)
[    0.000144] pid_max: default: 32768 minimum: 301
[    0.000300] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000306] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000828] CPU: Testing write buffer coherency: ok
[    0.001130] /cpus/cpu@0 missing clock-frequency property
[    0.007077] /cpus/cpu@1 missing clock-frequency property
[    0.013054] CPU0: update cpu_capacity 1024
[    0.013060] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.013107] Setting up static identity map for 0x400082c0 - 0x40008318
[    0.015428] CPU1: update cpu_capacity 1024
[    0.015434] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.015532] Brought up 2 CPUs
[    0.015540] SMP: Total of 2 processors activated (96.00 BogoMIPS).
[    0.015544] CPU: All CPU(s) started in SVC mode.
[    0.016173] devtmpfs: initialized
[    0.034403] VFP support v0.3: implementor 41 architecture 2 part 30 variant 7 rev 5
[    0.034886] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.034905] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.035104] atomic64_test: passed
[    0.035109] pinctrl core: initialized pinctrl subsystem
[    0.035717] NET: Registered protocol family 16
[    0.036010] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.037230] dump_class_init,861, success
[    0.075556] cpuidle: using governor menu
[    0.083309] sun8iw18p1-pinctrl pio: initialized sunXi PIO driver
[    0.126659] pwm module init!
[    0.129252] sunxi-pm debug v3.10
[    0.129728] sunxi_spi_probe()2281 - [spi0] SPI MASTER MODE
[    0.129791] sunxi_spi_request_gpio()1909 - [spi0] Pinctrl init spi0
[    0.129846] sunxi_spi_clk_init()1959 - [spi0] mclk 100000000
[    0.130315] spi spi0: master is unqueued, this is deprecated
[    0.130653] sunxi_spi_probe()2362 - [spi0]: driver probe succeed, base c8858000, irq 161
[    0.130984] sunxi_spi_probe()2281 - [spi1] SPI MASTER MODE
[    0.131042] sunxi_spi_request_gpio()1909 - [spi1] Pinctrl init spi1
[    0.131108] sunxi_spi_clk_init()1959 - [spi1] mclk 100000000
[    0.131564] spi spi1: master is unqueued, this is deprecated
[    0.131589] sunxi_spi_probe()2362 - [spi1]: driver probe succeed, base c885a000, irq 162
[    0.131997] usbcore: registered new interface driver usbfs
[    0.132084] usbcore: registered new interface driver hub
[    0.132186] usbcore: registered new device driver usb
[    0.134569] Bluetooth: Core ver 2.22
[    0.134653] NET: Registered protocol family 31
[    0.134657] Bluetooth: HCI device and connection manager initialized
[    0.134672] Bluetooth: HCI socket layer initialized
[    0.134681] Bluetooth: L2CAP socket layer initialized
[    0.134712] Bluetooth: SCO socket layer initialized
[    0.135934] clocksource: Switched to clocksource arch_sys_counter
[    0.149998] get androidboot.mode fail
[    0.150011] sunxi_i2c_adap_init()2476 - init
[    0.150855] NET: Registered protocol family 2
[    0.151499] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[    0.151520] TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
[    0.151539] TCP: Hash tables configured (established 1024 bind 1024)
[    0.151588] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.151615] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.151813] NET: Registered protocol family 1
[    0.152001] sunxi budget cooling probe start !
[    0.152019] CPU freq cooling register Success
[    0.152029] CPU hotplug cooling register Success
[    0.152248] CPU budget cooling register Success
[    0.154117] workingset: timestamp_bits=30 max_order=15 bucket_order=0
[    0.163241] io scheduler noop registered
[    0.163475] io scheduler cfq registered (default)
[    0.172248] uart0: ttyS0 at MMIO 0x5000000 (irq = 157, base_baud = 1500000) is a SUNXI
[    0.172275] sw_console_setup()1724 - console setup baud 115200 parity n bits 8, flow n
[    0.172318] console [ttyS0] enabled
[    0.172323] bootconsole [earlycon0] disabled
[    0.173182] misc dump reg init
[    0.174276] m25p80 spi0.0: mx25l12835f (16384 Kbytes) normal
[    0.174298] 5 cmdlinepart partitions found on MTD device spi0.0
[    0.174303] Creating 5 MTD partitions on "spi0.0":
[    0.174312] 0x000000000000-0x000000060000 : "uboot"
[    0.175715] 0x000000060000-0x000000070000 : "env"
[    0.177132] 0x000000070000-0x000000080000 : "dtb"
[    0.178454] 0x000000080000-0x000000780000 : "kernel"
[    0.179842] 0x000000780000-0x000001000000 : "rootfs"
[    0.181199] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.181372] get drv_vbus is fail, 84
[    0.181377] get ehci0-controller, regulator_io is no nocare
[    0.181381] get ehci0-controller wakeup-source is fail.
[    0.181491] sunxi ehci0-controller don't init wakeup source
[    0.181502] [sunxi-ehci0]: probe, pdev->name: 5101000.ehci0-controller, sunxi_ehci: 0xc05c96f8, 0x:c886a000, irq_no:9f
[    0.181555] sunxi-ehci 5101000.ehci0-controller: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.181590] sunxi-ehci 5101000.ehci0-controller: new USB bus registered, assigned bus number 1
[    0.181718] sunxi-ehci 5101000.ehci0-controller: irq 159, io mem 0xc056d83c
[    0.206121] sunxi-ehci 5101000.ehci0-controller: USB 0.0 started, EHCI 1.00
[    0.207193] hub 1-0:1.0: USB hub found
[    0.207237] hub 1-0:1.0: 1 port detected
[    0.207691] [ehci0-controller]: sunxi_usb_disable_ehci
[    0.207699] [sunxi-ehci0]: remove, pdev->name: 5101000.ehci0-controller, sunxi_ehci: 0xc05c96f8
[    0.207717] sunxi-ehci 5101000.ehci0-controller: remove, state 1
[    0.207737] usb usb1: USB disconnect, device number 1
[    0.208791] sunxi-ehci 5101000.ehci0-controller: USB bus 1 deregistered
[    0.209099] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.209290] get drv_vbus is fail, 84
[    0.209295] get ohci0-controller, regulator_io is no nocare
[    0.209299] get ohci0-controller wakeup-source is fail.
[    0.209398] sunxi ohci0-controller don't init wakeup source
[    0.209455] [sunxi-ohci0]: probe, pdev->name: 5101000.ohci0-controller, sunxi_ohci: 0xc05c8e98
[    0.209504] sunxi-ohci 5101000.ohci0-controller: SW USB2.0 'Open' Host Controller (OHCI) Driver
[    0.209539] sunxi-ohci 5101000.ohci0-controller: new USB bus registered, assigned bus number 1
[    0.209607] sunxi-ohci 5101000.ohci0-controller: irq 160, io mem 0xc04420a4
[    0.280912] hub 1-0:1.0: USB hub found
[    0.280956] hub 1-0:1.0: 1 port detected
[    0.281382] [ohci0-controller]: sunxi_usb_disable_ohci
[    0.281390] [sunxi-ohci0]: remove, pdev->name: 5101000.ohci0-controller, sunxi_ohci: 0xc05c8e98
[    0.281396] sunxi-ohci 5101000.ohci0-controller: remove, state 1
[    0.281420] usb usb1: USB disconnect, device number 1
[    0.282222] sunxi-ohci 5101000.ohci0-controller: USB bus 1 deregistered
[    0.282576] usb_serial_number:20080411
[    0.283491] input: sunxi-keyboard as /devices/virtual/input/input0
[    0.284598] sunxi-rtc rtc: rtc core: registered sunxi-rtc as rtc0
[    0.284607] sunxi-rtc rtc: RTC enabled
[    0.285248] i2c /dev entries driver
[    0.285315] Bluetooth: HCI UART driver ver 2.2.d448471.20181218-163903
[    0.285320] Bluetooth: HCI H4 protocol initialized
[    0.285324] Bluetooth: HCI Realtek H5 protocol initialized
[    0.286644] cpuidle: enable-method property 'psci' found operations
[    0.286978] cpuidle: enable-method property 'psci' found operations
[    0.288043] sunxi-mmc sdc1: SD/MMC/SDIO Host Controller Driver(v3.29 2019-8-6 19:27)
[    0.288139] sunxi-mmc sdc1: Can't get vmmc regulator string
[    0.288145] sunxi-mmc sdc1: Can't get vqmmc regulator string
[    0.288150] sunxi-mmc sdc1: Can't get vdmmc regulator string
[    0.288155] sunxi-mmc sdc1: Can't get vdmmc33sw regulator string
[    0.288159] sunxi-mmc sdc1: Can't get vdmmc18sw regulator string
[    0.288164] sunxi-mmc sdc1: Can't get vqmmc33sw regulator string
[    0.288168] sunxi-mmc sdc1: Can't get vqmmc18sw regulator string
[    0.288173] sunxi-mmc sdc1: Failed getting OCR mask: 0
[    0.288482] sunxi-mmc sdc1: set host busy
[    0.288488] sunxi-mmc sdc1: ***set host ocr***
[    0.288531] mmc:failed to get gpios
[    0.292641] sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B
[    0.316042] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[    0.345953] sunxi-mmc sdc1: detmode:manually by software
[    0.346803] sunxi_get_str_of_property()1561 - failed to get the string of propname led_regulator!
[    0.356835] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[    0.359302] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B
[    0.361193] sunxi-mmc sdc1: smc 0 p1 err, cmd 8, RTO !!
[    0.367459] sunxi-mmc sdc1: card claims to support voltages below defined range
[    0.377489] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
[    0.377589] sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 1 timing SD-HS(SDR25) dt B
[    0.377713] sunxi-mmc sdc1: sdc set ios:clk 50000000Hz bm PP pm ON vdd 21 width 4 timing SD-HS(SDR25) dt B
[    0.378483] mmc0: new high speed SDIO card at address 0001
[    0.385576] sunxi_led_probe()1759 - finish
[    0.385900] hidraw: raw HID events driver (C) Jiri Kosina
[    0.386201] usbcore: registered new interface driver usbhid
[    0.386205] usbhid: USB HID core driver
[    0.386272] Netfilter messages via NETLINK v0.30.
[    0.386454] nf_conntrack version 0.5.0 (2048 buckets, 8192 max)
[    0.386721] ctnetlink v0.93: registering with nfnetlink.
[    0.386901] ipip: IPv4 and MPLS over IPv4 tunneling driver
[    0.387559] gre: GRE over IPv4 demultiplexor driver
[    0.387565] ip_gre: GRE over IPv4 tunneling driver
[    0.388990] ip_tables: (C) 2000-2006 Netfilter Core Team
[    0.389205] Initializing XFRM netlink socket
[    0.389233] NET: Registered protocol family 17
[    0.389311] 8021q: 802.1Q VLAN Support v1.8
[    0.391062] Registering SWP/SWPB emulation handler
[    0.394224] get usb_detect_mode is fail, 22
[    0.394231] get det_vbus is fail, 84
[    0.394234] get id is fail, 84
[    0.394617] sunxi-rtc rtc: hctosys: unable to read the hardware clock
[    0.408411] VFS: Mounted root (cramfs filesystem) readonly on device 31:4.
[    0.408481] devtmpfs: mounted
[    0.408870] Freeing unused kernel memory: 252K
[    0.408873] This architecture does not have kernel memory protection.
[    0.416959] random: fast init done

----------------------------------------------------
以下是原始帖子内容(上午)

之前逆向了全志闭源的fes1
https://whycan.com/t_7448.html

现在已经重写出了bootloader然后实现了linux的快速启动
目前是上电 ~1.957 秒进入shell (如果不启用网络协议栈是 ~1.3秒)

由此可见全志linux是可以做到快速启动的…
他的BROM也没拖后腿(0 ms),如果是SBROM可能会长一些,后面再测

之前我在iMX6ULL上实现的是 ~1.67秒,看来全志还可以在优化优化。

平台: 全志R328-S3 (128MB DDR3)
NOR: MX25L12835F (DUAL 50MHz)
内核:Tina SDK r328_s3_std 默认kernel配置基础上,启用了 SPINOR 配置,禁用了 SPINAND。没做其他优化。

crt.png

下面是带时间戳的串口日志

[13-02-20.823]BOOTROM elapsed 0 ms
[13-02-20.823]
[13-02-20.823]
[13-02-20.823]-Hardcore Boot-
[13-02-20.823]
[13-02-20.823]Rev 11, Build Dec  8 2021 11:05:25
[13-02-20.823]mengxp works 2021
[13-02-20.823]
[13-02-20.844]CPU:  Allwinner R328-S3
[13-02-20.844]DRAM: DDR3 128 MB, 792 MHz
[13-02-20.844]NOR:  C22018(JEDEC ID)
[13-02-20.844]
[13-02-20.861]> Setup MMU
[13-02-20.861]> Load Optee
[13-02-20.876]> Load DeviceTree
[13-02-20.876]> Load Kernel
[13-02-21.213]> Open FDT
[13-02-21.213]> Setup FDT
[13-02-21.213]> Boot kernel
[13-02-21.276]Uncompressing Linux... done, booting the kernel.
[13-02-21.287][    0.000000] Booting Linux on physical CPU 0x0
[13-02-21.292][    0.000000] Linux version 4.9.118 (meng@u14aw) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #5 SMP Wed Dec 8 12:55:35 CST 2021
[13-02-21.306][    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[13-02-21.319][    0.000000] CPU: div instructions available: patching division code
[13-02-21.319][    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[13-02-21.323][    0.000000] OF: fdt:Machine model: sun8iw18
[13-02-21.341][    0.000000] bootconsole [earlycon0] enabled
[13-02-21.357][    0.001122] /cpus/cpu@0 missing clock-frequency property
[13-02-21.372][    0.006547] /cpus/cpu@1 missing clock-frequency property
[13-02-21.660][    0.306975] mmc:failed to get gpios
[13-02-21.735][    0.375120] sunxi_get_str_of_property()1561 - failed to get the string of propname led_regulator!
[13-02-21.735][    0.375160] sunxi-mmc sdc1: smc 0 p1 err, cmd 52, RTO !!
[13-02-21.757][    0.391824] sunxi-mmc sdc1: smc 0 p1 err, cmd 52, RTO !!
[13-02-21.757][    0.402291] sunxi-mmc sdc1: smc 0 p1 err, cmd 8, RTO !!
[13-02-21.767][    0.408969] sunxi-mmc sdc1: smc 0 p1 err, cmd 5, RTO !!
[13-02-21.767][    0.415635] sunxi-mmc sdc1: smc 0 p1 err, cmd 5, RTO !!
[13-02-21.784][    0.422300] sunxi-mmc sdc1: smc 0 p1 err, cmd 5, RTO !!
[13-02-21.784][    0.428973] sunxi-mmc sdc1: smc 0 p1 err, cmd 5, RTO !!
[13-02-21.788][    0.435643] sunxi-mmc sdc1: smc 0 p1 err, cmd 55, RTO !!
[13-02-21.799][    0.442409] sunxi-mmc sdc1: smc 0 p1 err, cmd 55, RTO !!
[13-02-21.800][    0.449172] sunxi-mmc sdc1: smc 0 p1 err, cmd 55, RTO !!
[13-02-21.821][    0.455936] sunxi-mmc sdc1: smc 0 p1 err, cmd 55, RTO !!
[13-02-21.837][    0.469110] write_efuse_to_reg_ver_3:reading calibration data0 is zero
[13-02-21.837][    0.480761] sunxi-rtc rtc: hctosys: unable to read the hardware clock
[13-02-22.398]Starting fstab.
[13-02-22.428]Starting syslogd.
[13-02-22.447]Starting lo.
[13-02-22.447]
[13-02-22.447]Processing /etc/profile...
[13-02-22.780]root@r328:/#

#59 Re: DOPI开源摄像头(HI3516/HI3518) » 某思变个戏法复活了,7205V200替换***EV200验证 » 2021-11-30 17:20:57

飘溢芳香 说:

看样也洗洗睡了,GK7205V200 已经涨价了,还想替换呢,

涨多少?我昨天问到的价格是30

#61 Re: 全志 SOC » 全志 R328-S3 fes1 DDR初始化代码逆向工程分享 » 2021-11-29 13:09:26

shaoxi2010 说:

谢谢大佬分享,想请教一个问题,auto_set_timing_para这个函数里面的ddr参数时怎么一个个对应起来的呢?
看起来像参照的主线uboot的代码,不知道能不能分享下思路呢?

所有代码都是全志的,我只是做RE工程。
DRAM控制器的寄存器定义是不开放的,usermanual里面都没有,所以很多dram初始化代码只能抄。

你问的那些时序参数都是DDR的标准,可以查询DDR spec手册。每家的dram颗粒时序可能不一样。
他这个代码应该是比较低配的初始化代码,用来适配绝大多数DRAM时序。

一开始我也以为主线uboot代码是全志的,但其实主线uboot代码也是抄的官方代码,或是参考了sdk中开放的早期soc的boot0代码。
全志并不参与维护主线uboot。

#62 全志 SOC » 全志 R328-S3 fes1 DDR初始化代码逆向工程分享 » 2021-11-27 14:07:24

mengxp
回复: 4

R328-S3 fes1 逆向工程

工程背景
我这个平台上全志的 boot0 启动性能有些低,其中读取 SPI NAND uboot 的代码耗时有0.5秒以上。
我相信这是通病,而 boot0 是闭源的。Tina SDK 中倒是有一些早期架构的 boot0 代码可以参考。
如果想要重写 boot0 ,我评估下来最难的其实是 DDR 的初始化,也就是 fes1 这部分。
fes1 就是设计用来辅助全志量产工具初始化 PLL 和 DDR 的,且大小非常小,只有 16KB。
把他逆向就可以搞定 DDR 的初始化。

工程目的
1.学习全志的相关底层。
2.提高逆向水平,证明自己拥有力量。
3.通过逆向工程,重新编写处该平台的 DDR 初始化 C 代码。
4.为后续重写 boot0 铺路。

工程准备
IDA Pro 7.5
Visual Studio 2012
GNU ARM NONE Toolchain for windows

工程经验
平时要上班,只能挤出业余时间,全部工程历时5天,终于完成,中间有一些弯路,我可以分享下。
例如复原的 C 代码,看起来已经和原始代码高度吻合,但运行是失败的,无法成功初始化 DDR。
调试了一天后我决定,再逆一遍,仔细比对每个语句。中间确实发现了几处错误,并修正了,但仍然无法成功初始化 DDR。
后来我想到一个办法,把 IDAPro Product ASM file 把代码贴到 .s 文件里然后编译。
将有嫌疑的函数替换为原始的 fes 汇编代码,最终终于排查出来问题。具体是什么问题就不分享了,还是不够仔细……

文件列表
fes1.fex 编译后 OUT 目录中的 fes1.fex 会被打包到烧录镜像中
fes1_sun8iw18p1.bin SDK中的原始 fes1 闭源文件
fes1_sun8iw18p1.bin.idb  IDA 工程
fes1re 逆向工程 Visual Studio

另外 uboot 主线中也有一些平台的 PLL、DDR 代码可以参考
我看了不是官方的代码,应该也是国外先辈们逆向后参考 SDK 代码写出来的
全志平台我是新手,欢迎大家一起交流

mengxp works 2021
QQ: 4003032

r328-s3_fes1_reverse_engineer.zip

#64 Re: 全志 SOC » 全志V831不支持安全引导? » 2021-11-16 14:37:59

在datasheet BROM章节找到了如下描述
supports loading only certified firmware
应该是支持secure boot

#65 Re: 全志 SOC » 不用risc-v如何实现自主可控?难道就是所谓的optee?tos? » 2021-11-16 10:08:34

bootrom 不是你的你就没法控
别想这些了,除非你自己做soc。

#66 Re: 全志 SOC » 请问一下用全志f1c200s或者其他型号的跑ui可以做到秒开吗, » 2021-11-16 10:06:43

Blueskull 说:

F1C上电brom进SPL会有半秒钟到一秒钟延迟,之后SPL进RTOS/XBOOT几乎瞬间。总的来说,一秒出头没问题。单片机那种一百多毫秒进UI不可能,光brom就不可能,那部分是嵌入在芯片里面的,优化不掉。

全志的其他芯片会这样吗?

#67 全志 SOC » 全志V831不支持安全引导? » 2021-11-16 10:04:42

mengxp
回复: 1

规格书上没提SecureBoot啊?但是他有加密模块啊,AES、RSA、Fuse都有,这些是secureboot的前提,难道他的bootrom没有实现secureboot???

有人知道这颗芯片究竟支持secureboot没有?

#68 全志 SOC » 谁有全志r328的开发资料 » 2021-10-07 13:06:58

mengxp
回复: 0

求全志r328的原厂资料,sdk文档等,个人研究学习使用。
主要需求技术手册和文档,uboot kernel 其他不要也行。我只搭建基本环境,

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn