您尚未登录。

#3 Re: Xilinx/Altera/FPGA/CPLD/Verilog » 想用国产FPGA真不容易 » 2025-06-19 21:11:43

1466088609 说:

请问FPGA学习需要多少算力可以

能开机的电脑都可以,不差钱可以搞个目前星球单核性能最高的CPU,FPGA综合主要吃CPU单核性能,大工程能大大缩短时间.

#4 Re: 全志 SOC » 全志T3PRO 的EMAC使用的EMDIO时序问题 » 2025-06-11 11:21:38

我为了省IO,2个网口时用1个MDIO接口,PHY地址不同即可。
另外一个板,因为IO功能的原因,用我的GMAC0,但用的GMAC1的MDIO,但GMAC1口没用,IO拿去做别的了。

#7 Re: 全志 SOC » f1c200,读sf卡时,错位两个字节 » 2025-02-18 17:34:37

常规做法是:
加个swap buf,不对齐时,先拷到swap里

#8 Re: 全志 SOC » F1C200s,C文件里定义全局数据,超过1K就读不到数组里的数据 » 2025-02-06 00:40:17

SVC_SIZE = 0x400;

栈溢出了吧?看下你代码中这数据是在全局还是在栈中?

#9 Re: 工业芯 匠芯创 » git pull同步贵司git仓库经常出现“致命错误:拒绝合并无关的历史” » 2024-12-26 17:27:56

fetch下来看看,应该是仓库里面强推了新版本,而不是在原有基础上更新的。

#10 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2024-12-02 14:11:05

cpuboot_membase = 0x070005c4
cpuxcfg_membase = 0x09010000

后面有人测试后反馈说仅写这2个寄存器,偶尔会有启动不了第2核的情况,但通过TEE就可以稳定启动。

这个现象有人遇到过没?可能是什么原因?

#12 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » 京东云雅典娜AX6600折腾记 » 2024-08-26 21:34:08

给硬核楼主点赞!
考虑到家里设备的底功耗越来越大,还是不买立省。

#13 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2024-08-09 16:00:11

>T113-S3支持吗?

根据PR里面的代码,在T113-S3编译一份就行了。

#15 Re: Cortex M0/M3/M4/M7 » 【重开旧坑】8051上的CMSIS-DAP调试器——TinyDAP开发过程记录 » 2024-05-31 15:27:41

我也打算用FPGA的方案,不过还没找到合适的方案,或组合。
1. 硬MCU硬核的FPGA ?还要带USB,这个好像没合适的型号
2. MCU+FPGA,之间的通信也是个问题

#16 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » ssh 登录服务器,明明密钥是正确的,确提示 invalid format,终于找到问题了 » 2024-05-30 12:31:33

最近编译份代码,上层老报错,一层层追查下去,最后发现有个内置的工具一运行就报非法指令。

对比发现编译用的机器的CPU没有avx2指令,换个更新点的机器就能用了。
掉坑时间长的原因是,开始的报错提示不友好,找问题时间比较久。

#17 Re: 工业芯 匠芯创 » d133打开网口后,编译报错。 » 2024-05-16 17:44:31

比如 netif_list 为空?甚至还没初始化,是个脏值。

不检查就直接访问么?

#18 Re: 工业芯 匠芯创 » d122bbv LVGL demo测试 » 2024-05-09 15:57:35

可以用同系统高配的芯片来做开发板,这样可以减少直接下载成品板的次数。

#24 Re: 工业芯 匠芯创 » D211适配MIPI屏反复上电断电有概率只亮背光 » 2024-04-13 15:40:04

有没可能是MIPI屏本身没复位好,可以测测MIPI有没数据在输出。

#25 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 讨论一下MQTT物联网安全问题 » 2024-04-07 18:29:30

你联下那几个通用云,看看鉴权怎么做的。
其实算下费用,MQTT用公有云也还能接受的,自己做好服务部分即可。

#26 Re: 工业芯 匠芯创 » D21x 的UART的最高速度到底是多少? » 2024-04-01 10:02:28

好奇一下,哪里需要8M的波特率?

模块的极限频率应该是指UART这个模块的输入时钟,经N分频后输出波特率。
看看这个UART是8倍采样还是16倍采样的,这样就能算出最大波特率了。
不过还得受限于物理IO的特性。

#30 Re: 站务公告/网站建设 » 如何在本站发图片, 顺便吐槽功能弱智的phpbb半自动步木仑 » 2023-10-24 15:34:29

我记得原来RT-Thread论坛也是用的phpbb,好像传图没这么麻烦。
站长是否测试下新版本?可能的话给升级下。(记得备份和演练)

#32 Re: 上海航芯 » 点灯完成 » 2023-10-15 09:58:35

这是拍摄效果导致?还是灯太刺眼了?

#33 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-10-10 11:36:54

晶振就频率,电压,封装引脚, 这3条对得上就行。
ppm看不同应用,但有源晶振基本没太差的。

我同事贴的应该是这个 https://item.szlcsc.com/30858.html

#35 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-30 11:46:01

坑了,果然翻车了。
我统计价格时,没算LCMXO2-2000HC-5TG100,
因为LCMXO2-2000HC-5TG100是在 mouser.cn 上面额外买的。。。。。。

#36 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-21 10:01:28

>老兄方便的话,能不能转一块给我?300元的价格我能接受。

嗯,我5块已经送3块给研究这块的朋友了,再转1块可以。
事先声明:
我确保再次测试后发出,快递方式和费用你自己决定。
到手后请马上测试,如此时损坏或快递原因损坏由我负责。
后续还有其它问题或硬件损坏,需要您自己维修处理。

可以的话,点那个站内信应该就可以给我发私信。

#38 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-20 20:27:23

我打了5片,PCB直接用git中的gerber文件就行了。

主要是LCMXO2-2000HC-5TG100C比较贵,再加上其它的物料。
光物料成本就200多了,算上加工费等接近300左右。

大佬在readme中重点强调了不建议用4TG100C后缀型号,可能会速度不太够。
以及68013假货多。

要是人多可以再凑1班车。

#39 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-18 23:14:58

aozima 说:

好像翻车了,全速正常,高速时依然识别为全速,都是 Detected speed: Full-Speed。
可能得改下代码,让强制为高速看看行不行。

没翻!

Wireshark 的接口配置里面忘记改高速了。

#40 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-18 22:24:42

好像翻车了,全速正常,高速时依然识别为全速,都是 Detected speed: Full-Speed。
可能得改下代码,让强制为高速看看行不行。

#41 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-09-18 21:44:53

aozima 说:

@usbbios 这个硬件有人发车吗? 想搭个车。
或新开1趟车?

做回来了,体验挺好的,软件直接把68013的烧录和fpga的烧录全做了,不用额外安装软件和下载器。
同样还是这个软件,直接扔Wireshark里面就能抓包。
显示的内容也比较全,好在可以使用Wireshark的过滤器过滤掉不需要显示的内容。

!(usbll.pid == 0x69) IN
!(usbll.pid == 0x5a) NAK
!(usbll.pid == 0xa5) SOF

!(syslog.msg == "USB PHY error") && !(usbll.invalid_pid) && !(usbll.pid == 0x5a) && !(usbll.pid == 0xa5) && !(usbll.pid == 0x69)

usb-sniffer_20230918.jpg

#46 Re: 全志 SOC » F1C100S原理图PCB可直接打样 » 2023-07-10 17:58:25

kenshin067 说:

好羡慕做硬件的可以白嫖板子,搞软件的只能看着眼馋

做软件的,到处都有代码可以。。。不更爽!

#47 Re: 全志 SOC » Line in接口插了话筒却录的都是杂音!被大佬笑死了!原来Line in和Mic in是有区别的!还有不知道的小伙伴赶紧补补! » 2023-04-21 10:18:14

所以现在电脑的耳机口变成全能自动了,自动识别再加手动选择。同时支持耳机和耳麦。
其实我现在新做板子都不想画耳机口了,每次在这纠结该用哪种接口,4线耳麦还分2种。
可惜现在没合适的全能蓝牙音频模块。

#48 Re: 全志 SOC » F1C100S下LittleVgl+RTT触摸、GT911、看门狗踩坑记录 » 2023-04-12 18:25:29

先给I2C上逻辑分析仪看下,也许是地址不对?或是没复位好

#50 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 怒开新坑,自制低成本高速USB分析仪(随缘更新) » 2023-03-22 13:01:20

实在受不了各种线了,统一多好。我现在单纯供电的都用6脚的type-c了。
DIY不打板的话,有type-c座子的小板可以买现成的。

#52 Re: RISC-V » 为什么mcu厂家还是用gcc而不是llvm » 2023-03-10 13:05:17

一些新兴的做自研DSP指令的公司基本都是基于LLVM了

#55 Re: NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 求推荐一款能传送图片好用的蓝牙模块 » 2023-02-25 18:17:29

比UART快的就是SPI或是USB了,其实还有个做法就是直接使用带WIFI的SOC。
你的图像是怎么来的?可以考虑下还有带DVP接口的WIFI SOC,全套直接到位。

#56 Re: NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 求推荐一款能传送图片好用的蓝牙模块 » 2023-02-24 17:04:32

走SDK方式的话,能到几十KB的速度吧。

WIFI随便都超过这个值,WIFI不在路由器下面的话,建议走手机开AP的方式比较好。

#57 Re: 感芯科技 » 给MC3172 增加shell » 2023-02-16 15:16:33

有个想法:把硬件上的逻辑多核映射成RTOS的多线程如何?用0核来做管理?

#59 Re: 全志 SOC » freertos 运行是否需要使能mmu? » 2023-02-11 23:15:21

ARM的MMU和CACHE在一起,为了开CACHE,MMU也必须开。
但可以像RT-Thread那样,虽然开了,但做1:1映射就行。
注意cache只对ddr部分开启,外设部分不开。

RISC-V的大部分芯片,MMU和CACHE分开的,可以不开MMU只开CACHE

当然CACHE也可以不开,但用DDR的话会卡成狗。

可以直接用坛友移植好的: https://whycan.com/t_3958.html
RT-Thread主仓库的bsp也可以用: https://gitee.com/rtthread/rt-thread/tree/v4.0.x/bsp/allwinner_tina

#60 Re: 全志 SOC » F1C100S USB口改为TYPE-C口引发的问题? » 2023-02-11 23:09:18

搜下 DFP、UFP、DRP
找下type-c主从切换芯片

#61 Re: 全志 SOC » 平头哥云上实验室,可以申请远程测试大量芯片或开发板 » 2023-01-06 00:00:39

用上远程断电 和 远程按键功能就行了,按键如果是接下接地的话,使用数字三极管比较方便。
如果是其它按键的话,要用继电器来实现了,这个应用上没有任何限制。

#62 Re: RISC-V » RISC-V不支持非对齐地址访问非常坑 » 2023-01-05 23:58:49

在异常处理里面做个软件补丁好了!

#63 Re: 全志 SOC » 平头哥云上实验室,可以申请远程测试大量芯片或开发板 » 2023-01-05 18:19:10

挺好的方式,我们也在办公室搭建了远程调试平台,在家就可以调试板子。

#64 Re: 全志 SOC » f1c100s能接25MHz晶振么? » 2022-12-05 17:53:16

PLL出来也是整百的,24还是25好像关系不大。楼主是哪个外设要多少频率?

https://whycan.com/t_4673.html

#65 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-11-20 23:10:25

vigour1000 说:

T113支持吗?

暂没支持,可以参考我添加的payload来添加一下,做好欢迎分享!

#67 Re: RISC-V » GCC 12把CSR相关指令放到扩展Zicsr中了 » 2022-11-08 10:01:42

>不太理解CSR访问指令为什么要作为扩展。大家怎么理解?

感觉还真可以不要

#68 Re: 全志 SOC » MIPI屏上电时序问题请教 » 2022-10-27 19:51:30

直接延时等几毫秒就行了,或硬件上加RC复位。
有个板子只有R没有C,也没有IO控制,同事掉坑里一周才爬出来。

#69 Re: RISC-V » 诛仙剑 C-SKY Linux 开发板 入坑记录 » 2022-10-15 11:59:01

话说我最近也要弄C-SKY指令的芯片,还是蛮有生命力的。

#70 Re: RISC-V » WCH又搞了个性价比王炸CH32V003 » 2022-10-13 10:40:39

I2C有从机,有ID,不错不错。

#73 Re: 全志 SOC » 想在D1S melis上面支持DVP摄像头,有没做过的小伙伴可以提供帮助? » 2022-10-07 11:08:17

melis 上DVP的驱动不全,应该是没适配完全。

在考虑要不先用F1C100S调下裸机的,再对比D1S tina代码差异来改吧。

#74 全志 SOC » 想在D1S melis上面支持DVP摄像头,有没做过的小伙伴可以提供帮助? » 2022-10-02 14:13:14

aozima
回复: 4

如题:

想在D1S melis上面支持DVP摄像头,有没做过的小伙伴可以提供帮助?

#77 Re: 全志 SOC » f1c100s RGB接口 » 2022-09-07 16:10:06

你看下这个

求一份全志f1c100s的8080接口的lcd驱动  https://whycan.com/t_6744.html

#79 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 土家造-手搓sip芯片 » 2022-09-03 13:08:21

迪卡 说:
aozima 说:

前排参与
厚膜电路,换个说法不就是把模块打上封装胶么?

到时候大佬给移植个RTT SMART。:D

这就安排(新建文件夹

#80 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 求助!LWIP 做TCP服务器,同一IP反复连接14次后无法继续连接! » 2022-08-30 16:51:55

服务器上面有time_wait还没自动清理,没资源了,可以调小lwip的time_wait,2msl这些参数。

#87 Re: 全志 SOC » 偶尔在某鱼上找了一块F1C600成品板,带10寸屏,这下可以愉快的玩板子喽~~ » 2022-07-21 03:09:02

CTP常用就那么几家,主要看看初始化时有没有刷新一堆参数。
如果参数已固化在CTP里面的话,直接去对应的位置读点就行了。

#89 Re: 全志 SOC » 全志V853开发板--构建编译 » 2022-07-19 15:47:24

向楼主学习,里面的RV MCU啥时候用起来?

#91 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 众人拾柴-魔改SPI为一主多从高速总线【迪卡总线】 » 2022-07-13 09:49:50

我的箱内总线都用I2C了,便宜。

T113要是支持CAN-FD就好了

## 箱内通讯总线

- I2C✅
  - 速率尚可
  - 怕干扰(可屏蔽)
- 485❌
  - 速率略高
  - 要收发器
- CAN❌
  - 速度较高
  - 要收发器(还挺贵)

#92 Re: 上海航芯 » 大家一起来研究ACM32F4芯片 » 2022-07-09 13:04:26

研究得够深入,学习了!厂家能给总线矩阵图就好了。

#93 Re: 全志 SOC » f1c100s/200s的串口波特率最大是多少? » 2022-06-30 10:54:11

periph时钟那里默认是25倍频(600MHz),改成24倍频(576MHz)

其它分频不变,
AHB就成了 200M ==》192M
AHB就成了 100M ==》 96M

#94 Re: 全志 SOC » f1c100s/200s的串口波特率最大是多少? » 2022-06-30 10:42:06

突然想到把APB降到96M可能会比较好,这样16倍过采样出来是6M,很容易分出500K 1M 1.5M 2M等波特率。
相比100M降低4M也没什么影响,因为是降低,所以也没什么风险。

96M时,115200使用52分频,6000000/52=115384
100M时,115200使用54分频,6250000/54=115740

这样算下来,115200的误差都能变小。

#95 Re: 全志 SOC » 偶尔在某鱼上找了一块F1C600成品板,带10寸屏,这下可以愉快的玩板子喽~~ » 2022-06-26 00:51:36

检查下是不是还需要心跳,以及硬件驱动这边要有帧信号上报。

#96 Re: 全志 SOC » f1c100s/200s的串口波特率最大是多少? » 2022-06-25 19:32:59

今天想提高下串口波特率到500K。

发现UART的时钟源只能是APB,现在是100Mhz。
100M/16=6.25M。这样所有波特率只能在这个数值下做除法。
这样根本就没法分出来,连115200都有一定无差。
这块有谁把APB提高到200Mhz的吗?

periph_get_pll_clk:600000000
ddr_get_pll_clk:312000000
cpu_get_clk:408000000
ahb_get_clk:200000000
apb_get_clk:100000000

#99 Re: 全志 SOC » 为方便大家研究全志RISCV D1芯片,花了点时间编写了一个精简版的裸机程序,方便大家学习参考。 » 2022-06-16 20:32:52

D1是外置DDR3,F133是内置DDR2,当然要区分啊。

DDR是从0x40000000开始,不是从0开始的。

#102 Re: 全志 SOC » 成功在T113-S3上跑了第一个裸机程序 » 2022-06-10 09:59:58

>hf是支持硬件浮点指令

不带hf的也是支持硬件浮点指令的呢,只是不使用FPU寄存器来传递函数参数,这样更通用,但性能会略低一点点。
用了带hf的,所有静态库都不兼容了,都要用gnueabihf的编译重新编译。

#106 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2022-06-07 23:43:36

F1C200s系列是从SPI FLASH中读取的,如果没有焊接SPI FLASH的话,就没有。

#108 Re: 全志 SOC » F1C100S裸机 Timer USB HOST » 2022-06-03 15:51:57

时空vsxx 说:

楼主的USB HOST 实现了吗。我最近也在调试USB HOST MSC

可以试试这个 https://whycan.com/t_8257.html

#110 Re: 全志 SOC » F1C100s ADC使用一坑 » 2022-05-27 14:06:16

我打算用按键专用的LRADC试试看,能分出 足电,中电,低电  3档就行了。

#111 Re: RISC-V » 自制小型操作系统内核nxos支持risc-v架构64位系统 » 2022-05-26 16:19:36

支持rustsbi(虽然我用的RV片子,我们都把原厂提供的SBI干掉了

#112 Re: 好钜润半导体(TIKY) » TKM32F499能否支持7寸屏?有无购买链接? » 2022-05-24 18:21:11

楼上刷屏多少帧?
此时切换一张图片(全屏)要多长时间?

#113 Re: 全志 SOC » 一个如何让你的客户必须从你这里购买主芯片新思路,抛砖引玉,探讨探讨。(不采用加密芯片的方案) » 2022-05-24 11:56:30

所以每次芯片选型时,重点提一下加密要求。给那些没选中的厂家,末选中理由加1条:没加密功能。
这样慢慢都有了(逃

#115 Re: 全志 SOC » F1C200S能不能不跑系统,直接寄存器操作,跑底层。 » 2022-05-22 11:04:28

能自然是能,看你自己的功底和打算投入的时间了。
庞大的系统底层不也是操作寄存器,并没什么区别。

#118 Re: BLDC电机驱动 » 画了个一体脱机机械臂驱动器 » 2022-05-11 23:48:02

>全网在做机械臂了

好像错过了什么,这是有什么典故吗?

#121 Re: 全志 SOC » rt-thread 中串口的读取 » 2022-04-30 19:54:06

- 用上rt_device_set_rx_indicate再rt_device_read
- 更高波特率,可以适配到V2版本,并用上DMA。

#122 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-04-26 18:35:50

笔走天下 说:

@aozima 你好,这个RTThread 环境怎么搭建,有无文章

我单独发了个贴子,你可以看下。

#123 Re: 全志 SOC » 试一试用MDK ARMCC 编译全志官方f1c100s sdk --- melis » 2022-04-26 18:34:45

bigbat 说:

全志这个f1c100s的芯片,就是把新塘的给打的够呛,不过听说新塘出了个a35的核产品,新塘的nuc792一颗30几块,都不赚钱不知道全志的10几块是怎么来的。

看做屏的喜欢用全志的多,做控制的用新塘的多。

#124 Re: 全志 SOC » 最近准备入坑,偏向裸机,选择哪款Soc好点? » 2022-04-21 16:27:55

芯片可以过时,技术功底不会过时。
不过在本站,当然是F1C100啦,要啥都有。

#126 Re: 全志 SOC » T113-S3 RT-Thread SMP适配笔记 » 2022-04-16 13:06:33

shaoxi2010 说:

欸,里面提到的SMP有些芯片多核是自动启动的是些啥芯片哦,能否告诉一下型号避免踩坑呢?

目前个人实际使用中就只有一个先启动M核,再启动cortex-A SMP的芯片是这样的,新芯片移植时问下厂家,记得有这回事就行了。

#128 Re: 全志 SOC » go语言裸机编程探索 » 2022-04-11 22:38:43

@kekemuyu
生成 .a 并与C这边相互调用的方式有没?
想在RTOS环境下,把部分应用逻辑代码用go编译成.a,并与原来的RTOS相结合。

#129 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2022-04-10 18:55:46

这PWM背光芯片最高频率能到多少?可以调高频率让听不到,也能“消除”干扰。

#130 全志 SOC » T113-S3 RT-Thread SMP适配笔记 » 2022-04-10 13:25:58

aozima
回复: 13
T113-S3 SMP适配笔记

目标

给T113-S3适配RT-Thread,并支持SMP。

资料

没有太详细的资料和示例,只有一些零星的信息。

- F133封装基本兼容
- Cortex-A7双核

一些参考资料
- https://whycan.com/t_7808.html
- https://bbs.aw-ol.com/topic/1247/

计划

- 最好能直接使用xfel在SRAM,或是DDR中运行,避免从SD卡启动还需要SPL。
- 先用xfel payload跑通, 最好能有串口打印。
- 再尝试直接load到ddr运行。
- 尝试在DDR中运行rt-thread
- 尝试响应中断
- 尝试支持SPL

过程

环境准备

- 开发板 芒果派
- 下载工具 xfel

先连接好开发板,默认没卡也没有FLASH,会自动进入USB FEL。
通过xfel可以探测并读取芯片信息。

$ xfel version
AWUSBFEX ID=0x00185900(R528/T113) dflag=0x44 dlength=0x08 scratchpad=0x00045000

$ xfel sid
d3402000ec1408140140082114cb5bcb

$ xfel ddr t113-s3
Initial ddr controller succeeded

xfel payload

磨刀不误砍柴工,调芯片最好有JTAG,没有的情况下,串口打印是必须的。
xfel工程里面有默认有t113-s3的ddr和spi的payload工程了。
我们先从里面剥离出最简单的串口操作代码,让其至少有输出功能,方便后面打印日志。

使用新编译出的payload,重新编译生成xfel,再随便执行下spi flash命令,串口有打印就行了。
留着这代码备用。

ddr中运行代码

继续基于上面的代码,把具体的功能可以先屏蔽。然后把修改链接地址为ddr。
然后使用xfel把这代码加载到DDR中,运行下看没有输出。

xfel ddr t113-s3
xfel write 0x40000000 spi.bin
xfel exec 0x40000000

果然看到了打印,说明可以使用xfel直接加载程序到DDR中运行,这样为后面的开发带来了极大的便利。

DDR中运行rt-thread

有了基本开发条件后,就可以开始移植软件部分了。

因为是cortex-a的内核,这块都比较通用,我打算基于`bsp/qemu-vexpress-a9`来修改。

先是使用menuconfig重新配置一下,把所有用不到的组件全关了,只留最基本的kernal和串口驱动部分。

再把链接脚本中的地址修改为目标芯片的地址 0x40000000。

然后把board.c中的中断和时钟心跳这些与硬件有关的代码先屏蔽。

串口驱动

因为没有JTAG,那么串口驱动是必须的了, 把之前从xfel payload中提取出来的串口驱动复制过来。
替换到原来的串口驱动的初始化部分,并把原来的所有硬件相关的代码暂时屏蔽。
只保留putc功能。

编译通过后,使用xfel加载到ddr中运行。观察串口。
果然没有任何打印 !!!!

汇编中的debug
遇事不要慌,问题肯定不大。没有任何打印说明程序没能正常运行,或是打印本身有问题。
首先没被运行的可能性可以排除,因为之前加载payload改的小代码可以运行的。

然后就是有可能程序还没运行到程序中串口初始化的地方,此时最好能有JTAG单步,或是能知道启动代码中的汇编程序都运行到哪了。
如果是C,每行加个打印就好了。嗯,汇编也能加。

因为驱动中的接口都是一堆参数,带句柄,还是static的,显然不方便汇编里面调用。
于是我们单独改造下,让串口初始化不需要参数,输出函数只要一个输出数据参数即可。

void sys_uart_init(void)
{
	virtual_addr_t addr;
	uint32_t val;

	/* Config GPIOE2 and GPIOE3 to txd0 and rxd0 */
	addr = 0x020000c0 + 0x0;
	val = readl(addr);
	val &= ~(0xf << ((2 & 0x7) << 2));
	val |= ((0x6 & 0xf) << ((2 & 0x7) << 2));
	write32(addr, val);
	............
}

void sys_uart_putc(char c)
{
	virtual_addr_t addr = 0x02500000;

	while((readl(addr + 0x7c) & (0x1 << 1)) == 0);
	write32(addr + 0x00, c);
}

这样汇编中就可以比较方便调用了,先放在启动入口看看有没打印。

.globl _reset
_reset:
    ldr r1, [r1]
    bl sys_uart_init
    mov r0, ='R'
    bl sys_uart_putc
    mov r0, ='T'
    bl sys_uart_putc
    mov r0, ='T'
    bl sys_uart_putc

新程序加载到DDR中,果然看到了我们想要的RTT这3个字的打印。说明程序运行到了这里。
通过这种办法,继续在汇编中不同位置添加不同的字符,最后定位到是进MMU初始化就再没打印了。

哦!!! 想起来还没更新MMU配置呢。
MMU配置可以先简单些,32位的全4G空间全部当成外设,把DDR区域设置为常规(带cache,可运行)

修改board.c中的platform_mem_desc表就好了

struct mem_desc platform_mem_desc[] = {
    {0x00000000, 0xFFFFFFFF, 0x00000000, DEVICE_MEM},
    {0x40000000, 0x47FFFFFF, 0x40000000, NORMAL_MEM},
};

更新mmu配置后,果然看到了 RT-Thread 启动LOGO,还打印了`msh>`。
当然,此时命令行不能输入。因为我们串口驱动的输入还没写。

因为全志的串口驱动基本兼容的,知道串口外设的基地址,直接抄原来其它芯片的代码,直接读寄存器,把getc实现就好了。
但还是不能输入,应该是要支持中断才行。

中断

cortex-A芯片一般都使用GIC,但有好几个版本,通过有限的资料查到,T113-S3是使用GICv2。
这块代码都是通用的,关键是要知道其在芯片中的地址,这个PDF中也有查到GIC地址是在`0x03020000`。

RT-Thread中,GICv2的基本适配已做好,新芯片适配需要知道2个地址,但PDF中没写。
这块根据全志同类型芯片的偏移来看,猜测是一样的

/* the basic constants and interfaces needed by gic */
rt_inline rt_uint32_t platform_get_gic_dist_base(void)
{
    return 0x03021000;
}

rt_inline rt_uint32_t platform_get_gic_cpu_base(void)
{
    return 0x03022000;
}

再通过PDF上面查到的UART0中断号是34,改好后,加载运行,果然收到中断了。

SMP

接下来就是适配SMP了,因为只是2核,所以也不用管分簇这些了。
最主要是要知道第2个核是怎么启动,启动后会运行哪个地址的程序。

其它这里还有个坑点要注意,就是有些芯片多核是自动启动的,但此时一般软件环境还没准备好,可能会乱飞,需要把非0核先暂停下来。
如果是这类芯片,就需要把`RT_SMP_AUTO_BOOT`打开,这样非0核会自动挂起,直到被0核唤醒,再去指定地址运行。
因为我们之前都能正常运行了,所以肯定不是这种类型的。

通过 https://whycan.com/t_7808.html 这个贴子里面 shaoxi2010 大佬的说明,知道了第2个核的启动方法。
此时更新menuconfig把SMP打开,然后更新下SMP需要的几个接口

/*
The Soft Entry Address Register of CPU0 is 0x070005C4.
The Soft Entry Address Register of CPU1 is 0x070005C8.
*/
void rt_hw_secondary_cpu_up(void)
{
    uint32_t cpuboot_membase = 0x070005c4;
    uint32_t cpuxcfg_membase = 0x09010000;
    uint32_t cpu, reg;

    cpu = 1;
    /* Set CPU boot address */
    writel((uint32_t)(secondary_cpu_start), cpuboot_membase + 4 * cpu);

    /* Deassert the CPU core in reset */
    reg = readl(cpuxcfg_membase);
    writel(reg | (1 << cpu), cpuxcfg_membase);

    __asm__ volatile ("isb":::"memory");
}

一些和芯片外设相关的先禁用掉,不要心跳也是能运行的。

void secondary_cpu_c_start(void)
{
    // int timer_irq_number;

    // timer_irq_number = aw_get_irq_num("TIMER1");

    rt_hw_vector_init();

    rt_hw_spin_lock(&_cpus_lock);

    arm_gic_cpu_init(0, platform_get_gic_cpu_base());
    // arm_gic_set_cpu(0, timer_irq_number, 0x2); //timer1

    // timer1_init(); 
    // rt_hw_interrupt_install(timer_irq_number, rt_hw_timer1_isr, RT_NULL, "tick1");
    // rt_hw_interrupt_umask(timer_irq_number);

    rt_system_scheduler_start();
}

编译通过后,使用xfel加载到ddr中运行。SMP果然愉快地运行起来了。

 \ | /
- RT -     Thread Operating System
 / | \     4.1.0 build Apr  9 2022 21:17:55
 2006 - 2022 Copyright by RT-Thread team
[I/sal.skt] Socket Abstraction Layer initialize success.
cpuxcfg_membase = 0x13FF0101 // 启动之前的值
cpuxcfg_membase = 0x13FF0103 // 启动之后的值

Hello T113 RT-Thread SMP!

msh />ps
thread   cpu bind pri  status      sp     stack size max used left tick  error
-------- --- ---- ---  ------- ---------- ----------  ------  ---------- ---
tshell     0   2   20  running 0x00000140 0x00001000    15%   0x0000000a 000
aio      N/A   2   16  suspend 0x00000080 0x00000800    07%   0x0000000a 000
sys work N/A   2   23  suspend 0x00000084 0x00000800    06%   0x0000000a 000
tsystem  N/A   2   30  suspend 0x00000098 0x00000400    22%   0x00000020 000
tidle1     1   1   31  running 0x0000005c 0x00000400    19%   0x00000020 000
tidle0   N/A   0   31  ready   0x0000005c 0x00000400    19%   0x00000020 000
timer    N/A   2    4  suspend 0x0000007c 0x00000400    12%   0x0000000a 000

后续

整理代码上gitee

#131 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-04-09 21:36:12

@shaoxi2010 谢谢大佬!SMP启动成功

/*
The Soft Entry Address Register of CPU0 is 0x070005C4.
The Soft Entry Address Register of CPU1 is 0x070005C8.
*/
void rt_hw_secondary_cpu_up(void)
{
    uint32_t cpuboot_membase = 0x070005c4;
    uint32_t cpuxcfg_membase = 0x09010000;
    uint32_t reg;

    /* Set CPU boot address */
    writel((uint32_t)(secondary_cpu_start), cpuboot_membase + 1 * 4);

    /* Deassert the CPU core in reset */
    reg = readl(cpuxcfg_membase);
    writel(reg | (1 << 1), cpuxcfg_membase);
    reg = readl(cpuxcfg_membase);

    __asm__ volatile ("isb":::"memory");
}
 \ | /
- RT -     Thread Operating System
 / | \     4.1.0 build Apr  9 2022 21:17:55
 2006 - 2022 Copyright by RT-Thread team
[I/sal.skt] Socket Abstraction Layer initialize success.
cpuxcfg_membase = 0x13FF0101 // 启动之前的值
cpuxcfg_membase = 0x13FF0103 // 启动之后的值

Hello T113 RT-Thread SMP!

msh />ps
thread   cpu bind pri  status      sp     stack size max used left tick  error
-------- --- ---- ---  ------- ---------- ----------  ------  ---------- ---
tshell     0   2   20  running 0x00000140 0x00001000    15%   0x0000000a 000
aio      N/A   2   16  suspend 0x00000080 0x00000800    07%   0x0000000a 000
sys work N/A   2   23  suspend 0x00000084 0x00000800    06%   0x0000000a 000
tsystem  N/A   2   30  suspend 0x00000098 0x00000400    22%   0x00000020 000
tidle1     1   1   31  running 0x0000005c 0x00000400    19%   0x00000020 000
tidle0   N/A   0   31  ready   0x0000005c 0x00000400    19%   0x00000020 000
timer    N/A   2    4  suspend 0x0000007c 0x00000400    12%   0x0000000a 000

#132 Re: 全志 SOC » 小麻雀 Nezha-MQ 迎来双核A7版本128M内存(基于T113-s3) » 2022-04-09 20:43:12

@xboot 我测试了下,中断可以响应了。后面给加个心跳,并尝试开启SMP。

gic_cpu_base 是 0x03022000
gic_dist_base 是 0x03021000

T113_gic.png

#133 Re: 全志 SOC » 小白请教一下,裸奔代码在F1C500S 上跑功耗,比F1C100S 高,芯片温度明显高不少的原因。 » 2022-04-08 21:50:48

留意硬件本身问题,如末发现的短路。
建议多焊几个板试下,或有某些IO的初始状态不同造成短路或是漏电。

#134 Re: 全志 SOC » v3s 掌机 参考FUNKEY » 2022-04-07 20:31:28

这是个小WIFI吗? 真是赞!

#136 Re: 全志 SOC » F1C200S牺牲颜色数量,增加一个TWI1出来? » 2022-04-02 15:20:47

>多一路硬件iic可以有自己独立的带宽

你这是实际算出来的带宽不够,还是你觉得不够呢?
你现在几个从机?分别地址是多少?数据量是多少呢?I2C总线速率是多少呢?

#138 Re: 全志 SOC » Linux时间戳到2038年后怎办? » 2022-04-01 16:07:06

自己做工具链的大项目,直接把工具链接libc里面的time_t升级到64位了。

使用现成工具链不好改的项目,单独把加了套处理时间的代码,不与libc里面冲突。
只是要求应用部分都要使用新的API。

同时也可以在链接脚本上做些处理,让没改的应用尽量不要链接到libc里面老的API去了。
但是无法保证全部拦截掉。

#140 Re: 全志 SOC » Linux时间戳到2038年后怎办? » 2022-04-01 10:57:00

最近开始在项目中使用64位时间戳了,客户验收都要设置到2038年以后。

#145 Re: 全志 SOC » F1C200S牺牲颜色数量,增加一个TWI1出来? » 2022-03-18 21:11:26

接啥芯片?从机地址冲突了吗?能不能改地址?

#146 Re: 全志 SOC » F133跑rtt不定时宕机,好烦躁啊 » 2022-03-18 16:14:34

是不是超频了? 跑的哪个代码? 根据提示的信息反查看看有没线索?

#147 Re: RISC-V » WCH的RISC-V居然跑出了3.84DMIPS/MHz的成绩... » 2022-03-12 10:24:39

只要标准指令本身没特殊,就可以用通用编译器。

#149 Re: 全志 SOC » 捡到一个东西,帮忙鉴定一下 » 2022-03-09 20:42:38

鳝丝与螺丝 说:

板子短路了,冒了个电花,芭比q了

好事,不用浪费时间了,把时间花在刀刃上。

#151 Re: 全志 SOC » MangoPi-MQ 麻雀D1s && D1 Nezha 裸机实验 && rtos实验 » 2022-02-23 15:51:57

楼上的问题是因为path中找不到 riscv64-unknown-elf-gcc
请确认这个名称正确,并添加到path中,

建议把你工具链接的路径全添加一下

set RTT_EXEC_PATH=xxx\bin
set EXEC_PATH=xxx\bin
set PATH=xxx\bin;%PATH%

#152 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-02-23 10:41:22

@sniper
在楼主位我的PR链接那里可以看到我的完整代码的,在这个分支 https://github.com/aozima/xfel/tree/aozima_sd

欢迎继续改造。另外你也是直接在板上焊接SD-NAND吗?
也可以试试这位大佬的方法,我暂时文件不大,还没空测试。
https://bbs.aw-ol.com/topic/1002/

#153 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-02-23 10:30:59

sniper 说:

如果是先将 image 下到 ddr, 再从 ddr 写到 SD 卡,这样速度会不会 快一点呢?

有道理,可以不用改代码,你先把DDR初始化一下,然后下载BIN到DDR测下速度。估计和SRAM差不多。
然后再估算出SDIO连续写的速度,应该就可以估算出最后的总速度。
如果收益可观的话,可以在我的基础上再改进一下。

#154 Re: 全志 SOC » 使用rust对arm9处理器进行裸机开发 » 2022-02-11 15:59:42

要不来试试在RT-Thread中运行Rust吧,系统和驱动用RT-Thread的,部分应用是Rust的。

#156 Re: 全志 SOC » MangoPi-MQ 麻雀D1s && D1 Nezha 裸机实验 && rtos实验 » 2022-01-27 12:24:24

话说 栈强制对齐到16字节也确实凶残,要使用栈的情况,不够16就很浪费了。

#158 Re: 全志 SOC » F1C100s如何实现批量加密烧录 » 2022-01-21 10:15:53

因芯片本身没加密,所以至少SPL那阶段是不加密的。
你可以程序起来后,根据ID自己算一份,然后自己把自己给更新了。

你参考下这个 https://whycan.com/t_6507.html

#160 Re: 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-01-19 20:04:56

@yang_AE86 参考我添加的payload,就可以支持更多芯片,反正全志的SDIO都差不多,不过像C100S这类起linux进U盘后会更快,就可以不必要支持了。

#161 全志 SOC » 分享一个用于烧录SD-NAND或EMMC的xfel版本,目前支持F133/D1S » 2022-01-19 13:12:41

aozima
回复: 41

在使用F133,板子是用的128MB的SD-NAND。然后就遇到烧录问题,因为之前开发板都是拔卡下来烧录的,现在焊上面没法拔,看到xfel添加了spi nand的支持,所以想着在xfel中添加sd的支持也是可以的。

代码已发PR,但因速度不够快,估计不会合并进主干。所以单独发个编译好的exe方便有需要用到的小伙伴。

下载:
xfel-sd_v1.2.4-0c87477d-259075.zip

目前支持多块读写,速度有260KB左右,烧录柿饼固件10MB以下还是够用了。
启来后剩下的资源用SPI WIFI来下载,不过WIFI也就1MB左右,快不到多少。所以调试时要烧录128MB也是可以等等。。。

使用方法(格式基本和FLASH一样,不过内部把length对齐到了8KB):

    xfel sd                                             - Detect sd card
    xfel sd read <address> <length> <file>              - Read sd card to file
    xfel sd write <address> <file>                      - Write file to sd card

相关贴子
- PR 添加SD卡命令
- XFEL已支持spi nand flash烧写
- V3s/S3/f1c100s通过USB启动Linux,并把SD NAND/TF卡挂载为U盘, 可以dd或Win32DiskImager任烧写

#162 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » VMware虚拟机共享windows目录性能调优小技巧 » 2022-01-19 12:50:35

aozima
回复: 2

有在windows上面使用VMware Player虚拟机,并使用使用vmhgfs挂载windows上面的目录,使用上倒是挺方便。
但是编译大些的项目,相比虚拟机里面的linux上面ext4文件系统就慢多了。

现在调整了一缓存相关的参数,快多了。以编译F133的工程为例,原来2分半,现在20秒。
具体参数细节可以再自己研究调整下。

当然,有了缓存意味着2边同步的时间会变长,不过我的应用主要是在win上面编写和调试。linux里面用docker主要做编译工作,所以两边不会对同一个文件进行读写,且两边切换是手动的,过程至少也要几秒,所以问题不大。

$ vmhgfs-fuse -h

$ vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other,entry_timeout=3,negative_timeout=3,attr_timeout=3,auto_cache

测试好后建议直接写到`/etc/fstab`中

$ cat /etc/fstab
...
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,entry_timeout=3,negative_timeout=3,attr_timeout=3,defaults 0 0

vm+vmhgfs 默认参数

$ vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other
$ time scons -j12
real    2m27.556s
user    0m35.779s
sys     0m46.991s

vm+vmhgfs 调整参数

$ vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other,entry_timeout=3,negative_timeout=3,attr_timeout=3,auto_cache
$ time scons -j12
real    0m20.262s
user    0m50.965s
sys     0m21.402s

vm+ext4

$ time scons -j12
real    0m9.358s
user    1m4.950s
sys     0m19.415s

#163 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 20:39:55

嗯,我这现在就是linux启动还有些问题,所以才搞fel了。

#164 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-12 12:10:29

>xfel内置U盘Payload

可以啊,有这个好像SD命令可以不要了。
最好能支持高速USB,现在USB只跑12M太慢了。
FLASH因写写入擦除速度的原因,12M是够用了,但用来接SD或EMMC就不够用了。

或也可以保留。
因为win下面无法访问物理扇区,用win32diskimage,在没分区的时候,是可以访问物理0地址的。
但分了区,就会因分区的原因,无法访问高地址的内容。把分区删除掉,就能又访问物理0地址了。

还是linux dd爽。

#165 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2022-01-10 23:28:46

F133上面调fel直接加载linux,费了几天是调好了。但linux运行并起U盘费了几天也没好。

所以继续回来折腾fel sd,搞了2天终于是通了,虽然速度只有45KB。
明天整理下发个PR,欢迎入坑。

#169 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » [求助]RTT组件自动统一初始化宏INIT_EXPORT » 2021-12-29 10:00:44

方案1 链接脚本让其保留
方案2 属性里面加强制保留属性,你再仔细看下

#171 Re: 全志 SOC » F1C100s-LCD-TV-CH579M 板子 » 2021-12-22 19:09:45

我给整成一个SPI网卡用,后面看看能不能塞BLE进去。

#173 Re: 全志 SOC » f1c100s性能和stm32哪个型号性能差不多啊 » 2021-12-15 18:30:46

感觉哪里姿势不对,至少不会差才对。

也可以看看柿饼,还是很丝滑的。

#176 Re: 全志 SOC » 请问裸机f1c100s+lvgl可以屏幕旋转90°吗 » 2021-11-20 20:48:55

驱动里面自己旋转,这分辨率,估计要20ms。

#177 Re: 全志 SOC » f1c100s/200s的串口波特率最大是多少? » 2021-11-19 20:14:28

看时钟源和分频系数,算出误差。高波特率建议用1M 2M这样的,双方都容易实现0误差。

#178 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-03 11:45:27

对的,焊在板子上面不方便拔下来,虽然慢些,但能用还是方便。

#179 Re: 全志 SOC » XFEL已支持spi nand flash烧写 » 2021-11-02 10:10:02

大佬一个人顶一个团队!

想让xfel支持SD卡读写,可行不?从哪下手?想尝试下!

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

刚有小伙伴用 RT-Thread + 柿饼 做了一个电动车面板,好像最快不到1秒就亮了 :-)

#181 Re: Cortex M0/M3/M4/M7 » GD32F1x0的非零等待闪存运行速度测试 » 2021-10-26 11:23:48

>到底多长的延迟算是比较长呢?既然官方没有说明,那我只好自己测试一下了。

赞一个!
之前做项目时没测过,我把他当成了:比自己用SPI去读写略快一些的级别,来排布应用数据的,链接脚本上直接分开,不然高速数据自动链接到这里面就坑死了。

#184 Re: 全志 SOC » v3s,zero板子的spiflash启动,调用reboot起不来的问题 » 2021-10-19 20:53:35

- MX25L51243G
- W25Q256JV

都是
- 02H:PP;12H:PP4B
- 03H:READ;13H:READ4B
- 20H:sector erase;21H:SE4B

#185 Re: 全志 SOC » v3s,zero板子的spiflash启动,调用reboot起不来的问题 » 2021-10-19 13:57:08

发现手上用的几个芯片,4字节地址模式下,都有 READ4B/PP4B等命令,这样不用切为4字节模式,就能直接读取后面的内容。
这样就不要切换模式,这样就不会出现不复位不能启动的问题了。

#186 Re: 全志 SOC » 请问可以通过uboot命令进入fel烧录模式吗? » 2021-10-16 21:09:27

擦掉0地址,再重启,就进入FEL模式了。

#187 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » RSA ECC硬件加速卡 » 2021-10-13 14:00:35

还得评估下你需要的计算量,才好选择合适的方案。

#190 Re: 全志 SOC » 自己画的F1C100S/F1C200S全引出邮票孔MINI小方板 » 2021-10-09 17:31:40

楼主88个脚完全可以把TV引出的啊,我们72个脚都引出了,另外4边好像不对称。
要不参考下我们的,可以PM下我。

#192 Re: 全志 SOC » v3s,zero板子的spiflash启动,调用reboot起不来的问题 » 2021-09-27 22:24:44

楼主这个问题后续如何了?

有个想法:
既然用SPI FLASH芯片,那么SDIO可能没有使用。
那么是否可以利用boot rom先探测SD这个特利,使用SD的IO来复位FLASH。

另外就是像STM32的内部看门狗在动作的时候,会从内部拉低RESET引脚。不知道V3S是否也有?

#193 Re: RISC-V » 自制博流bl702精致小板 » 2021-09-17 14:31:09

>直接把我写的时序代码给优化掉了,延时函数直接删除,我人都傻了!

代码看看

#195 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » tcp socket编程能否判断网线是否断了? » 2021-09-15 09:55:42

#if (LWIP_TCP_KEEPALIVE == 0)
#error "LWIP_TCP_KEEPALIVE must enable"
#endif

rt_err_t socket_config(void)
{
    int keepalive = 1;      //Enable keepalive.
    int keepidle = 60;      //idle time is 60s.
    int keepinterval = 5;   //sending interval of detective packet
    int keepcount = 3;      //detective count.
	
    int flag = 1;

    if (setsockopt(socket_fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepalive, sizeof(keepalive)) < 0)
    {
        LOG("set Keep-Alive attribute failed\n");
        return -RT_ERROR;
    }
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPIDLE, (void*)&keepidle , sizeof(keepidle));
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPINTVL, (void *)&keepinterval , sizeof(keepinterval));
    setsockopt(socket_fd, IPPROTO_TCP, TCP_KEEPCNT, (void *)&keepcount , sizeof(keepcount));
	
    setsockopt(socket_fd, IPPROTO_TCP, TCP_NODELAY, (void *)&flag , sizeof(flag));

    return RT_EOK;
}

{
	struct timeval timeout;

	timeout.tv_sec = 1;
	timeout.tv_usec = 0;

	setsockopt(connected, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));			
}

#196 Re: 全志 SOC » 被GCC编译参数坑 » 2021-09-14 10:57:05

可以分组,分文件,甚至一个文件中分块采用不同的优化等级。这样方便定位出是哪一部分代码被优化坏了。

#201 Re: 全志 SOC » 请教一个初级问题,F1C100/F1C200 外接SPI FLASH的最小容量 » 2021-08-25 16:14:37

>用STM32 模拟一个 SPI FLASH吧,哈哈哈。

bootrom的时序其实是固定的,因此根本不需要解析主机发来的命令,只需要测好时序,然后把数据准备好,并配好DMA,应该就行了。
不过bootrom里面要是改了,要重新配。

#202 Re: 全志 SOC » 请教一个初级问题,F1C100/F1C200 外接SPI FLASH的最小容量 » 2021-08-25 16:09:21

tigger 说:
aozima 说:

32KB总要吧,不然SPL都放不下。
楼主这是要做无盘启动么!

用STM32 模拟一个 SPI FLASH吧,哈哈哈。

理论上完全没问题,不过你从机反应应该没那么快。至少也要搞个FPGA/CPLD才行。

不过我原来使用AX88772C时,用STM32模拟了一个93C46,那个读写命令友好很多,AX88772C的时序也不快。

#203 Re: 全志 SOC » 请教一个初级问题,F1C100/F1C200 外接SPI FLASH的最小容量 » 2021-08-25 15:31:01

32KB总要吧,不然SPL都放不下。
楼主这是要做无盘启动么!

#207 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 【发现一个好玩的】GPS北斗汽车电动车摩托车防盗定位器 » 2021-08-17 14:02:46

这个我买了一个,用了几年,然后APP不能用了。

现在拆了打算当开发板用,谁有这个资料,我当时没想到会有拆了当开发板这天。

#208 Re: 全志 SOC » [求助]V3S点屏 (三线SPI&RGB) » 2021-08-17 10:44:38

这个SPI只是用来初始化而已,初始化完了就和普通RGB没区别了。

#210 全志 SOC » RGB888不使用8位时,低位数据线应该怎么接? » 2021-08-16 11:04:26

aozima
回复: 8

屏和控制器都是RGB888的,但是实际项目中往往只用RGB565.

此时空出来的如R0 R1数据线,应该怎么处理?

- 0. 浮空(肯定不建议,受干扰时会闪?)
- 1. 接地(可以用,但是否在FF时,不能满幅显示?)
- 2. 接到R7 R6
- 3. 接到R2 R3

#212 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » rt thread如何通过tcp实现固件更新? » 2021-07-31 10:49:56

照猫画虎,自己改个呗。

先读代码搞清原理,Ymodem/http方式 是把新固件写哪了,你用你自己项目合适的方式给写入去呗。
http方式 也算是 TCP方式呢

#213 Re: 司徒开源 » 动手DIY蓝牙手柄 » 2021-07-27 10:10:10

没有外壳还是扎手啊!外壳搞起!

#214 Re: 司徒开源 » 安卓手机如何解决按键不能同时按的问题? » 2021-07-26 18:11:07

蓝牙手柄哪有卖?

话说这手机连接蓝牙手柄的意义何在 :-)

#215 Re: 司徒开源 » 安卓手机如何解决按键不能同时按的问题? » 2021-07-21 19:25:34

也许硬件上是矩阵扫描的,硬件上就有冲突。

#219 Re: 全志 SOC » 随便水一贴,电阻触摸屏校正 » 2021-07-17 10:13:40

非线性怎么办,或用了一段时间后线性指标就下降了。
目前想到的办法是增加校准点,但感觉作用有限。

#220 Re: RISC-V » esp32上运行juicevm psram可选 » 2021-07-14 16:27:18

这个厉害,要不跑个分? 哈哈!

#221 Re: 全志 SOC » 利用xfel及mkz工具实现一机一镜像量产方案 » 2021-07-13 15:55:59

因为LZ4的解压速度最快,所以这几天对比了下,发现这压缩率很蛋疼啊。
感觉这压缩率还不如不压了,另外我现在boot都是读取用DMA,这样我的解压和读取是可以并行的,这样只要CPU够快,是可以用比较强的压缩算法的。
lz4-gz-lzma.png

#222 Re: Cortex M0/M3/M4/M7 » 请教,lwip如何在不同线程里收发? » 2021-07-09 16:36:21

gethostbyname得到的host要检查,

另外把 gethostbyname 修改为 getaddrinfo吧,以后都建议用这个了。

#223 Re: 全志 SOC » F1C100/200s U-Boot 2020.07 (USB + LCD + 1bit SDIO) » 2021-07-08 15:31:16

https://github.com/u-boot/u-boot.git clone了代码。
确认其中有对应的tag,然后切到这个tag

git clone https://github.com/u-boot/u-boot.git
git tag -l -n | grep v2020.07
git checkout -b aozima v2020.07

把补丁复制到repo根目录,然后检查补丁是否冲突。

# 查看patch的情况
git apply --stat 0001-v2020.07.3.patch
# 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上
git apply --check 0001-v2020.07.3.patch
# git diff生成的patch,用以下命令打上
git apply 0001-v2020.07.3.patch

重新配置编译后,测试1bit的TF卡可以启动。

#226 Re: 全志 SOC » 正常运行状态下,有没有办法切换到FEL模式? » 2021-07-08 00:03:31

刚好也有这个需求,想到另外一个方法:
写个程序或命令,把TF或FLASH的SPL给擦写掉,重启就进FEL了。
虽然不是预想的方法,但效果是完全一样的。

#228 Re: 全志 SOC » 正常运行状态下,有没有办法切换到FEL模式? » 2021-07-07 12:34:30

晕哥 说:

可以的  sunxi.org 网站有专门一个TF卡固件,插入TF卡,强制进入FEL

简单找了下没找到,可以发个定位不?
不过我自己改了个,也可以用 https://whycan.com/t_6768.html

#229 全志 SOC » 分享一个专门的TF卡固件,插入TF卡,强制进入FEL,适于F1C100S » 2021-07-07 12:33:22

aozima
回复: 4

分享一个专门的TF卡固件,插入TF卡,强制进入FEL,适于F1C100S,应该也适用说F1C200S。

看站长在 https://whycan.com/t_2072.html 时说已有,找不太熟悉没找到。
所以我基于 https://whycan.com/t_4606.html 的工程改了一下,烧录到TF卡可以进入FEL,然后再读写FLASH。

F1C100S_back_to_fel.zip
把这个文件烧录到FLASH0地址也能进入FEL,
当然,把FLASH的0埴写个错文件进去也能进FEL。

--- a/spl/src/sys-copyself.c
+++ b/spl/src/sys-copyself.c
 
 void sys_copyself(void)
 {
+		back_to_fel();
+
 	int d = get_boot_device();
 	void * mem;

#230 Re: 全志 SOC » F1C200S+RTT文件系统 及如何将电脑上的文件平写进去的方法 » 2021-07-07 09:37:08

lfsdisk要留意和LFS的版本相同才行,不同的大版本之间不兼容。
而且块设备扇区大小和总大小也要对应,不然也不能像FAT那样兼容。

#231 Re: Cortex M0/M3/M4/M7 » 请教,lwip如何在不同线程里收发? » 2021-07-06 20:47:20

好吧,最近正在学习Rust语言,希望能对类似的问题有所帮助。

#232 Re: 全志 SOC » 儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl » 2021-07-06 15:57:59

郁闷,忘记WIN上面打开磁盘也仅是打开逻辑分区了,所以我烧录8K地址,实际是逻辑分区中的8K地址。
之前也想到过这个问题,但是在linux上面用DD时,可能文件烧错了,后面就一直用错误的方式在烧录。

目前直接烧录楼主机的boot.bin在F1C100S上面可以启动,但打开是乱码,逻辑分析分析仪测了波特率又像是对的。
把楼主的代码重新scons编译一下,再烧录是可以正常打印的。

抽空了用示波器来测下具体啥情况!

#234 Re: Cortex M0/M3/M4/M7 » 请教,lwip如何在不同线程里收发? » 2021-07-06 09:40:35

你可以把这条assertion小改一下,改为if,然后在里面下普通断点停下来,就知道是哪个mailbox了

#235 Re: 全志 SOC » 儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl » 2021-07-05 19:49:11

sunxiang 说:

直接按照偏移来写,会不会导致原有的文件系统破坏呀。

MBR分区表中间有空洞的,离第1个分区的起始地址还很远呢,默认有上M的空间。
如果需要更大,可以在分区的时候,让第1个分区定在更大的地址就行了。

#237 Re: 全志 SOC » 儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl » 2021-07-04 16:22:00

@aozima 容量与2点有关,1是64G以上的卡是SDXC,可能会识别有问题。2是对文件系统有影响。

芯片内部的BROM是不管文件系统,直接按偏移量读取的。加上同样的这张卡(实际验证了多张),烧录其它的镜像可以启动。
所以只会和烧录在8K位置的内容有关。

#239 Re: Cortex M0/M3/M4/M7 » 请教,lwip如何在不同线程里收发? » 2021-07-03 12:36:30

Gentlepig 说:

(rt_object_get_type(&mb->parent.parent) == RT_Object_Class_MailBox) assertion failed

这个是比较明确的内存写穿,进入仿真调试,给这个变量下个写断点,应该一下就能把肇事者找出来。

#240 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » Saleae Logic 整上 NEC IR 红外分析插件, 终于可以解析红外代码了 » 2021-07-02 17:25:32

赞一下,以前改过SDIO时钟极性。
不过现在也没搞懂为啥SDIO的时钟极性要做成自动识别,感觉很坑的设计。

#241 Re: 全志 SOC » 儿童节给大家的礼物,f1c200s,TF卡启动RTT的spl » 2021-07-02 13:36:01

这个有谁试过可以在F1C100S上面启动不? 我烧录后无法启动,还是跑去SPI FLASH上面了。

不过我烧录可以F1C100S在FLASH上面启动的SPL到TF上,还是无法启动。
用的是这个工程 https://whycan.com/t_1393.html

但是TF卡里面直接烧录完整的uboot+linux镜像是可以启动的。
确认TF卡的8K位置,已经完整烧录mksunxi处理过后的SPL BIN文件了。
且这个SPL BIN烧到SPI FLASH的0地址是可以启动的。

不知道TF卡还有什么其它的要求?
比如SPL的大小不能少于多少KB?

#242 Re: 全志 SOC » 关于V3S DE 引擎的驱动 » 2021-07-01 18:09:24

V3S 是 DE2.0吧!
200s是旧的,应该参考价值不大。

#243 Re: 全志 SOC » V3s/S3/f1c100s通过USB启动Linux,并把SD NAND/TF卡挂载为U盘, 可以dd或Win32DiskImager任烧写 » 2021-07-01 17:47:54

我的f1c100s的SD卡是用的1bit,使用SDC0/PFx这组。
怎样改下比较快?

#244 Re: 全志 SOC » Tiny200 SPINAND固件分享 » 2021-07-01 09:59:57

谢谢楼上,理解了。
这都是电阻屏的通病,虽然和ADC有些关系,但不是主要原因。
我打算用芯片自带的电阻屏接口也接上做个对比。

#245 Re: 全志 SOC » Tiny200 SPINAND固件分享 » 2021-06-30 11:34:57

>ns2009这破玩意,就不是给人用的。

楼主是遇到啥坑了吗?有没避坑经验?

#246 Re: 全志 SOC » 如何删除sd卡的uboot? » 2021-06-29 17:39:34

只写1个块破坏掉SPL就行了

#247 Re: 全志 SOC » 如何删除sd卡的uboot? » 2021-06-29 17:38:55

楼上的命令还要指定长度吧,不然8K以后全没了。

#248 Re: RISC-V » 【新玩具get】博流智能BL702(RISC-V+FPU+2.4G+USBD) » 2021-06-23 10:57:19

test0001 说:

开发板在哪买的,价格如何,看到rt-thread在推中科蓝汛的芯片,开发板AB32VG1配置比这个好点,只要4块钱,这个价格如何

听说后面还有引脚更少的SSOP封装,用来做小MCU很香。
没有了蓝牙,价格肯定也很香。

#250 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问这些 X86 可变长度指令,而且又没有对齐,怎么知道指令的起始位置? » 2021-06-18 11:46:12

有规则的,从头开始就不会错。
一旦错了一步,后面都会错。

有个想法,如果是定长的,万一因为意外错了一条,后果应该没那么严重。

#252 Re: Cortex M0/M3/M4/M7 » 请教,lwip如何在不同线程里收发? » 2021-06-16 11:56:30

>通过lwip_send()发送出去

你在msh线程中创建的socket,可以在其它线程中去收发。
只是建议不要同时在多个不同的线程中对同一个socket进行收发。

另外,你用的rt-thread哪个版本?
因为rt-thread的dfs和sal,对文件系统 和 lwip的fd(scoket)做了统一的管理,
所以你不要再直接调用lwip_send,而应该用SAL这边的send/recv,不然就会乱掉。

#253 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请教CH579的网络,不用库自己初始化的问题 » 2021-06-15 13:31:19

关于“R8_ETH_ECON2 0x40009006 PHY 模拟参数设置寄存器”这个寄存器,

数据手册上面说的是 “[3:1] 保留,必须写入 011”
但反汇编里面的操作与数据手册不同,这块也很疑惑。

用的是CH579F,没有SWD引脚。只能看反汇编,这块有些难调。

#254 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请教CH579的网络,不用库自己初始化的问题 » 2021-06-15 13:30:31

aozima
回复: 8

我想使用CH579做一个网卡,SPI从机转以太网。

对芯片做了验证,基本上可行。现在遇到了2个问题。

1 SPI从机通过 COUNT=SPI0_DMA_NOW-SPI0_DMA_BEG,
在数据长度大于8字节时,无法获取传输长度。
实际传输大于8字节时,依然只显示7或8,但接收时内存中的数据是对的。
发送时,逻辑分析仪抓到的数据也是对的。

这点是否有解决办法?
没有的话,只能通过数据包头和校验来判定了。

不过芯片好像没有单独的硬件CRC,要用软件来算了。
另外吐槽下,就是SPI从机只能单双工,不过这也还能忍。

2 自己初始化以太网时,交换机灯不亮。
因为不需要在CH579里面跑协议栈,所以打算不要 CH57xNET.LIB
所以根据数据手册和 CH57xNET_LibInit 重写了以太网初始化。
但发现自己写的初始化,PHY好像没有工作,交换机的灯没有亮。
dump出PHY的寄存器发现有区别。
diff.png

自己写的初始化代码如下

int ch57x_eth_init(const uint8_t *macaddr)
{
    uint8_t tmp;
    // 配置安全寄存器进入安全模式,打开以太网络的时钟和电源;
    // 最好能关中断,因为只有16个周期有效果
    R8_SAFE_ACCESS_SIG = 0x57;
    R8_SAFE_ACCESS_SIG = 0xA8;
    R8_SLP_CLK_OFF1 &= ~(1<<5); // 打开时钟
    R8_SLP_POWER_CTRL &= ~(1<<1); // 打开电源
    R8_SAFE_ACCESS_SIG = 0;

    // 补充,建议这里做个反初始化,防止意外。

    // 2 开启相应的中断,可选的,启用阻抗匹配电阻;
    // R8_ETH_EIE = RB_ETH_EIE_RXERIE | RB_ETH_EIE_TXERIE | RB_ETH_EIE_R_EN50 | RB_ETH_EIE_TXIE | RB_ETH_EIE_LINKIE | RB_ETH_EIE_RXIE;
    R8_ETH_EIE = 0; // 参考反汇编
    tmp = R8_ETH_EIE; // 这里回读为0
    PRINT("\r\n@%s L=%d, R8_ETH_EIE read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);
    tmp |= 0xdb; // 1101 1011 参考反汇编
    R8_ETH_EIE = tmp; //  参考反汇编
    tmp = R8_ETH_EIE; // 这里回读为 0xDB
    PRINT("@%s L=%d, R8_ETH_EIE read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);
    tmp |= 4; // 0b100 50电阻 参考反汇编
    R8_ETH_EIE = tmp; //  参考反汇编
    tmp = R8_ETH_EIE; // 这里回读为 0xDF
    PRINT("@%s L=%d, R8_ETH_EIE read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);

    R8_ETH_EIR = 0xFF; //  参考反汇编

    tmp = R8_ETH_ESTAT;
    tmp |= 0xC0; //清中断和buf中断
    R8_ETH_ESTAT = tmp;//  参考反汇编写回

    tmp = R8_ETH_ECON2;
    // PRINT("@%s L=%d, R8_ETH_ECON2 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);
    tmp >>= 4;
    tmp <<= 4; // 清理低4位
    R8_ETH_ECON2 = tmp;

    tmp = R8_ETH_ECON2;
    // PRINT("@%s L=%d, R8_ETH_ECON2 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);
    tmp |= 4;
    R8_ETH_ECON2 = tmp;
    tmp = R8_ETH_ECON2;
    // PRINT("@%s L=%d, R8_ETH_ECON2 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);

    tmp = R8_ETH_ECON1;
    PRINT("@%s L=%d, R8_ETH_ECON1 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);
    tmp |= 0xC0; // 复位发送和接收模块 
    R8_ETH_ECON1 = tmp;
    tmp = R8_ETH_ECON1;
    PRINT("@%s L=%d, R8_ETH_ECON1 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);

    //清高2位后,再写回
    tmp &= 0x3F; // 取消复位状态
    R8_ETH_ECON1 = tmp;
    tmp = R8_ETH_ECON1;
    PRINT("@%s L=%d, R8_ETH_ECON1 read out=%02X\r\n", __FUNCTION__, __LINE__, tmp);

    R8_ETH_ERXFCON = 0;

    tmp  = R8_ETH_MACON1;
    tmp |= 1; // MAC 接收使能
    R8_ETH_MACON1 = tmp;

    tmp = R8_ETH_MACON2;
    tmp &= 0x1F; //清高3位后,再写回 RB_ETH_MACON2_PADCFG
    R8_ETH_MACON2 = tmp;

    tmp = R8_ETH_MACON2;
    tmp |= 0x20; // 所有短包填充 0 至 60 字节,再 4字节 CRC;
    R8_ETH_MACON2 = tmp;

    tmp = R8_ETH_MACON2;
    tmp |= 0x10; // 硬件填充 CRC
    R8_ETH_MACON2 = tmp;

    tmp = R8_ETH_MACON2;
    tmp &= 0xfb; // 1111 1011 清除 巨型帧
    R8_ETH_MACON2 = tmp;

    tmp = R8_ETH_MACON2;
    tmp |= 0x01; // 全双工
    R8_ETH_MACON2 = tmp;

    R16_ETH_MAMXFL = 0x24f; // 0x24f 1500 最大包长,需要确定

    // 3 配置接收过滤模式、CRC 功能、MAC 地址;
    // R8_ETH_ECON2 = 0x07; // 默认值 0x06,但读出来为4。

    R32_ETH_HTL = 0x65820294;
    R32_ETH_HTH = 0x220B1858;

    // 设置MAC地址
    // R32_ETH_MAADRL = macaddr[0] | (macaddr[1] << 8) | (macaddr[2] << 16) | (macaddr[3] << 24);
    // R16_ETH_MAADRH = macaddr[4] | (macaddr[5] << 8);
    {
        uint8_t *ptr = (uint8_t *)&R32_ETH_MAADRL;
        uint32_t value;
        uint32_t i;

        PRINT("mac ptr = %p\r\n", ptr);

        for(i=0; i<6; i++)
        {
            tmp = *macaddr;
            PRINT("mac #%d = %02X\r\n", i, tmp);
            *ptr = tmp;
            ptr++;
            macaddr++;
        }

        value = R32_ETH_MAADRL;
        PRINT("R32_ETH_MAADRL: 0x%08X\r\n", value);

        value = R16_ETH_MAADRH;
        PRINT("R16_ETH_MAADRH: 0x%04X\r\n", value);
    }

    // R32_ETH_MACON = 0x10310100; //直接用最终值,后面再做分解。

    R8_ETH_ECON1 |= RB_ETH_ECON1_RXEN; // 收发控制,测试用

    // 4 设置缓存;
    R16_ETH_ERXST = (uint32_t)ch57x_rx_buf;


    // 5 启动接收,开启中断。
    R8_ETH_EIE |= RB_ETH_EIE_INTIE;

    return 0;
}

#255 Re: 全志 SOC » 请问 Cortex-A7 支持 Thumb-2 指令集吗? » 2021-06-14 11:05:57

这样空间小些,对RAM和cache的压力小些,也许性能有提升,可以分别跑个分看看。

#256 Re: 司徒开源 » 研究FC3000掌機的開源可行性 » 2021-06-10 23:48:44

前排点赞,在犹豫要不要入坑!

#262 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 捡垃圾上瘾,35元双SATA口海思方案nvr拆解,破密码,固件dump » 2021-05-20 15:59:13

也许丝印是乱打的,甚至前缀都是误导。
看驱动名或一些描述符应该可以确定些信息

#264 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请教大家一个问题,thumb状态下,每一条指令都是16bit长度吗? » 2021-05-20 14:53:38

1. 编译和链接时加  -mthumb-interwork

2. 跳转时,先跳到自动生成的 xx_from_thumb 和 xx_from_arm

   b1f0c:	002a      	movs	r2, r5
   b1f0e:	0020      	movs	r0, r4
   b1f10:	f018 ff2a 	bl	cad68 <__memmove_from_thumb> // 当前在thumb模式,调用arm模式的函数 

000cad68 <__memmove_from_thumb>: // 编译器自动生成的 interwork 代码
   cad68:	4778      	bx	pc
   cad6a:	46c0      	nop			; (mov r8, r8)
   cad6c:	eaffc71a 	b	bc9dc <memmove>

000bc9dc <memmove>:
   bc9dc:	e1500001 	cmp	r0, r1
   bc9e0:	e92d4070 	push	{r4, r5, r6, lr}
   ....
   bca48:	e8bd4070 	pop	{r4, r5, r6, lr}
   bca4c:	e12fff1e 	bx	lr


   136ac:	e1a05000 	mov	r5, r0
   136b0:	e1a00004 	mov	r0, r4
   136b4:	eb02ddd3 	bl	cae08 <__rt_ota_get_fw_version_from_arm> // 当前在ARM模式,调用thumb模式的函数 

000cae08 <__rt_ota_get_fw_version_from_arm>:
   cae08:	e59fc000 	ldr	ip, [pc]	; cae10 <__rt_ota_get_fw_version_from_arm+0x8>
   cae0c:	e12fff1c 	bx	ip
   cae10:	000b9261 	// 实际是 000b9260 thumb模式要奇数,用bx实现 跳转+切换

000b9260 <rt_ota_get_fw_version>:
   b9260:	b510      	push	{r4, lr}
   b9276:	bd10      	pop	{r4, pc}

3. ARM模式的汇编函数,需要添加 `.type xxx, %function`,否则由thumb模式下跳转过来时不会生成`__func_asm_arm_from_thumb`

asm.S

	.code 32
    .globl _exit
_exit:
b .

	.type func_asm_arm, %function
    .globl func_asm_arm
func_asm_arm:
	BX LR

	.code 16
	.thumb_func
    .globl func_asm_thumb
func_asm_thumb:
	BX LR

#265 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请教大家一个问题,thumb状态下,每一条指令都是16bit长度吗? » 2021-05-19 19:02:05

原文链接 https://blog.csdn.net/zerglurker/article/details/39451123?utm_source=blogxgwz1

>这其实是一个误解,因为 长跳转是由两条跳转指令组成的。

=======================================================
最近因为工作的原因,经常接触到长跳转指令,但是总是弄不明白,跳转的目标地址怎么得来的
经过多方面的资料查找,和自己的反复推算,现在总算弄明白了
先上例子:
下面是几个实际遇到的机器码机器对应的反汇编
示例一 3950a4: f13d feaa =>bl 4d2dfc
示例二 395082: f13d fe40 =>bl 4d2d06
示例三 395044: F7FF FFAc =>bl 394fa0

大家是不是也奇怪为什么16位的thumb指令里面,会出现32位的指令。
开始我也是这么认为的
这其实是一个误解,因为 长跳转是由两条跳转指令组成的。
其实际机器码和和含义如下:
1 1 1 1  0 +11位地址偏移高位(off0)
0xF             13D
1 1 1 1  1 +11位地址偏移低位(off1)
0xF             EAA
还是以上述三个例子做示范,
其偏移如下:(偏移是将指令去除高五bit得来的,f13d->13d 高五bit是1111 0【001】||| feaa->6aa高五bit是1111 1【110】)
示例一 off0=0x13d off1=0x6aa
示例二 off0=0x13d off1=0x640
示例三 off0=0x7FF  off1=0x7AC

首先要做的事情是将两个11位合并为一个22位数(注意由于off1是11位,意味着其最高位为off0的最低位,off0的值要除2)
即 offmid = ((off0/2)<<12)|((off0%2)<<11)|(off1)
按照这样计算,几个示例的偏移中间量为:
offmid = 0x9eeaa
offmid = 0x9ee40
offmid = 0x3fffac
接着将这个值乘2,得到一个23位数
offmid1 = 0x13dd54
offmid1 = 0x13dc80
offmid1 = 0x7fff58
对于前面两个这是一个正数,最高位为0,所以不必取反保留原来的值
对于最后一个,最高位为1,是负数,要减1后取反
处理后,如下:
offmid2 = 0x13dd54
offmid2 = 0x13dc80
offmid2 = 0x8000a8
最高位为1,则表示向前跳转,最高位为0表示向后跳转
跳转的基址是当前指令的末尾,需要再追加4个字节
所以实际跳转值就是:
off = 0x3950a4+4+0x13dd54 = 0x4d2dfc
off = 0x395082+4+0x13dc80 = 0x4d2d06
off = 0x395044+4- 0x0000a8 = 0x394fa0

反过来再看一看,其实 长跳转的偏移是这么来的:

首先取当前位置和目标位置的偏移差
地址因为内存对齐的原因,必然是偶数(即最低位必然为0),所以偏移值只有23位有意义,最低位永远为0
又由于最高位为符号位,所以,只有22位存储了真正的值

然后取补码(正数的补码是源码,负数的补码是符号位不变,剩余数取反加1),这样可以去除符号位对值的影响,将结果变为一个真正的22位值

最后再将其拆分为两个11位数,分成两个跳转指令执行

这么一想,顺着看,结果一目了然;但是反汇编的时候,难度就大大增加了,呵呵
————————————————
版权声明:本文为CSDN博主「52编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/zerglurker/article/details/39451123

#267 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 如何使用rtt的at组件? » 2021-05-19 17:20:53

都有ifconfig了,直接用socket。

>占到了90多k
先换个大容量的片子来,全程搞起来再评估体积,看有没裁剪的可能。

#272 Re: 全志 SOC » 在全志芯片F1C100S/V3S/V831上实现裸机加密方案,防盗版进行时(不采用专用加密芯片)。 » 2021-05-17 20:01:27

最终还是都在解压到DRAM中运行,不管怎么启动,等启动完了,直接去DRAM中读。

这样好像无解,虽然可以在运行中做些运行环境检查,但这些检查指令是可以篡改的。
所以还是希望芯片本身能支持安全启动,且运行时,DRAM中的数据也是加密的。

#278 Re: NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 有没有现在比较简单使用的Lora模块 » 2021-05-07 09:50:28

1 肯定有
2 和 3也肯定有,但共存是有冲突的。可以是相同的硬件,但软件上有不同的工作模式。

#281 Re: 全志 SOC » F1C100S芯片内部有没有唯一序列号呢,如果有该怎么获取呢 » 2021-04-26 10:15:59

>所有spi flash 都有唯一id吗?还是仅部分支持

现在大部分都有了,要看具体型号。

#288 Re: ESP32/ESP8266 » ESP32-C3片子好像出来了 » 2021-04-12 13:02:34

arychen 说:

WIFI6有啥用?  速度快吗?

速度可以更快,功耗可以更低。但实际还得看疗效。

#292 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 请问嵌入式设备的网卡mac地址可以随意设置吗? » 2021-04-08 11:59:40

用 00:11:22:33:44:55 吧,

或这样

    /* OUI 00-80-E1 STMICROELECTRONICS. */
    stm32_eth_device.dev_addr[0] = 0x00;
    stm32_eth_device.dev_addr[1] = 0x80;
    stm32_eth_device.dev_addr[2] = 0xE1;
    /* generate MAC addr from 96bit unique ID (only for test). */
    stm32_eth_device.dev_addr[3] = *(rt_uint8_t *)(UID_BASE + 4);
    stm32_eth_device.dev_addr[4] = *(rt_uint8_t *)(UID_BASE + 2);
    stm32_eth_device.dev_addr[5] = *(rt_uint8_t *)(UID_BASE + 0);

#293 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 请问嵌入式设备的网卡mac地址可以随意设置吗? » 2021-04-08 11:57:52

能用个P,这刚好是个组播地址。
有很大概率被有组播策略的交换机丢弃,能过的都是不标准的。

广播地址是全为1,即 FF:FF:FF:FF:FF:FF 这个大家都知道。
组播/多播地址是是第48位为1,后面的位与IP地址有换算关系(具体看相关资料)

测试时,建议前3字节使用网卡芯片厂家的OUI,后3字节自己生成,局域网中不重复即可。
正式产品,是需要购买OUI的。

>arp -a
  224.0.0.2             01-00-5e-00-00-02     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态
>netsh interface ipv6 show neighbors
ff02::1 33-33-00-00-00-01  永久
ff02::2 33-33-00-00-00-02  永久
ff02::1:2 33-33-00-01-00-02  永久
ff02::1:3 33-33-00-01-00-03  永久
ff02::1:ff00:86b 33-33-ff-00-08-6b  永久
ff02::1:ff0e:8497 33-33-ff-0e-84-97  永久
ff02::1:ff22:6d50 33-33-ff-22-6d-50  永久

#305 Re: 全志 SOC » F1c100S 的性能到底如何?怎么看天梯图ARM9只相当于M0的性能 » 2021-03-03 09:39:16

尽量定点化,实在要用浮点,可以看看 Qfplib 这个库。

#306 Re: 全志 SOC » 为什么Cache 写通模式 V3S还跑不过F1C100 » 2021-02-22 18:25:40

分块越大,性能越低吧。所以DDRx后面数据越大反而开销越大,虽然频率更高能弥补一些。

#308 Re: 好钜润半导体(TIKY) » TKM32F499开坑 » 2021-02-08 00:39:15

既然core是一样的,那只要不是存储器相关的,是否都可以完全通用?

#311 Re: 全志 SOC » 有用人F1C100s外接W5500实现以太网吗 » 2021-02-01 13:17:38

看下这个贴子吧

兄弟们,F1C100S 要加个以太网接口有没有好的推荐
https://whycan.com/t_5835.html

用 CH579 做一个也可以的!

#313 Re: 全志 SOC » 全志V3s采用UDP视频传输H264效果很好 » 2021-01-28 16:57:36

FluxBB 不是 phpbb 哈,phpbb还是要强很多!

#318 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 请问Linux + AP6212/ESP8089/RTL8723BS 可以抓到微信的airkiss配网协议包吗? » 2021-01-23 18:52:33

能支持混杂模式就可以。 所以,驱动有支持就行。

不过,别折腾 airkiss 配网了,多种新姿势可以选择。

微信配网小程序二维码

#319 Re: 全志 SOC » 兄弟们,F1C100S 要加个以太网接口有没有好的推荐 » 2021-01-09 16:06:52

加个SPI的ENC28J60,或是DM9051。

虽然成本高些,但是不用切芯片,开发成本可以省下来。这块自己权衡吧。

#323 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有没玩rust的?最近打算把rust程序编译成静态库,然后在C里面调用 » 2020-12-29 10:11:11

Rush? Rust?

Rust有很多有用的特性,但全转到Rust感觉有点自废武功,所以希望可以结合起来,
并解决项目中的实际问题。

目前还在摸索中,欢迎楼上入坑。

#324 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有没玩rust的?最近打算把rust程序编译成静态库,然后在C里面调用 » 2020-12-27 22:27:52

aozima
回复: 5

原文链接:https://club.rt-thread.org/ask/article/2439.html

工作中的嵌入式项目,基本都是C语言。
一直想在项目中引入一个略高级的语言,来填补C语言的一些不足。

之前有用过MicroPython)和javascript,但除了性能和体积外,都有些要把主要工作转到新语言的感觉,要做不少的对接工作。
也用过Lua,感觉也差不多。

学习评估Rust)语言时,感觉性能和体积应该都不会有太大的问题。加上语言本身主打的安全性,再结合一些库,用来做一些C语言不擅长的动态操作感觉比较合适。
但如果把主要工作切过来,感觉Rust目前又太荒芜了,而且上面的问题也同样存在。

## 尝试
了解到Rust可以编译成静态库,于是动了只用Rust实现其中一小部分功能的想法。

随手一搜,找到这篇文章: c语言调用rust库函数]

按步骤做完,倒是挺顺利,增强了信心。


### 编译arm版静态库

上面测试都是在x86上面进行的,嵌入式基本是使用arm和riscv等芯片。
考虑到上手门槛,我这里选择了[qemu-vexpress-a9](https://gitee.com/rtthread/rt-thread/tree/master/bsp/qemu-vexpress-a9)这个bsp做为我们的目标平台。
这样不用开发板就可以测试了。

先要安装目标环境,可以参考这个链接:Rust 嵌入式开发 STM32 和 RISC-V)

rustup target list
rustup target add armv7a-none-eabi
rustup target list | grep installed

安装好目标环境后,开始尝试编译arm版的静态库

$ cat src/lib.rs
#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) {
    println!("hello : a + b = {}", a + b);
}

$ cargo build --target=armv7a-none-eabi
warning: unused manifest key: build
   Compiling foo v0.1.0 (/home/aozima/work/rust_study/foo)
error[E0463]: can't find crate for `std`
  |
  = note: the `armv7a-none-eabi` target may not be installed

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: could not compile `foo`

To learn more, run the command again with --verbose.

查了一些资料
* https://forge.rust-lang.org/release/platform-support.html
* https://blog.csdn.net/readlnh/article/details/88899586

对于没有移植标准库的目标环境,需要添加 `#![no_std]`

$ cat src/lib.rs
#![no_std]

#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) {
    println!("hello : a + b = {}", a + b);
}

这下错误提示变成了
`cannot find macro `println` in this scope`

考虑到先简单做测试,于是先注释掉打印,改为纯运算。

$ cat src/lib.rs
#![no_std]

#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) -> i32 {
    //println!("hello : a + b = {}", a + b);
    return a+b;
}

这下错误提示变成了
`error: `#[panic_handler]` function required, but not found`

参考资料:独立式可执行程序,添加必要的 `panic`

$ cat src/lib.rs
#![no_std]
use core::panic::PanicInfo;

#[no_mangle]
pub extern "C" fn foo(a: i32, b: i32) -> i32 {
    //println!("hello : a + b = {}", a + b);
    return a+b;
}

#[panic_handler]
fn panic(_info:&PanicInfo) -> !{
    loop{}
}

终于成功编译

$ cargo build --target=armv7a-none-eabi
warning: unused manifest key: build
   Compiling foo v0.1.0 (/home/aozima/work/rust_study/foo)
    Finished dev [unoptimized + debuginfo] target(s) in 0.10s
$ ls target/armv7a-none-eabi/debug/libfoo.a

## 使用静态库

把编译出来的 libfoo.a 复制到 qemu-vexpress-a9的`applications/libs`目录下,
并更新 `applications/SConscript`

-group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
+LIBS = ["libfoo.a"] # 添加静态库文件
+LIBPATH = [os.path.join(GetCurrentDir(), 'libs')]  # 添加静态库搜索路径
+
+group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH, LIBS = LIBS, LIBPATH = LIBPATH)

### C中引用静态库中的函数

#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

extern int foo(int a, int b); // 声明一个函数

int main(void)
{
    int tmp;
    printf("hello rt-thread\n");

    tmp = foo(1, 2);
    printf("call rust fn: foo(1, 2) == %d\n", tmp);

    return 0;
}

在链接时发生报了错误

$ scons --verbose
... -Lapplications\libs -lfoo -lc -lm
/armv7-ar/thumb\libgcc.a(_arm_addsubdf3.o): In function `__aeabi_ul2d':
(.text+0x304): multiple definition of `__aeabi_ul2d'
applications\libs\libfoo.a(compiler_builtins-9b744f6fddf5e719.compiler_builtins.20m0qzjq-cgu.117.rcgu.o):
/cargo/registry/src/github.com-1ecc6299db9ec823/compiler_builtins-0.1.35/src/float/conv.rs:143: first defined here

提示在rust的静态库libfoo.a中也有__aeabi_ul2d的实现,与libgcc.a中冲突。

这点暂时没理解得太清楚,不过release版本编译的库没有引入这个实现

$ cargo build --target=armv7a-none-eabi --release
$ ls target/armv7a-none-eabi/release/libfoo.a

把release版的libfoo.a复制到`applications/libs`目录下,
再次编译链接通过

$ scons --verbose
...  -Lapplications\libs -lfoo -lc -lm
arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin
arm-none-eabi-size rtthread.elf
   text    data     bss     dec     hex filename
 593317    5212   85056  683585   a6e41 rtthread.elf
scons: done building targets.

在qemu中运行成功

 \ | /
- RT -     Thread Operating System
 / | \     4.0.3 build Dec 26 2020
 2006 - 2020 Copyright by rt-thread team
lwIP-2.0.2 initialized!

hello rt-thread
call rust fn: foo(1, 2) == 3
msh />

## 体积与性能分析

把生成的elf进行反汇编

60010040 <main>:
60010054:	fa01f69b 	blx	6008dac8 <puts>
60010058:	e3a01002 	mov	r1, #2
6001005c:	e3a00001 	mov	r0, #1
60010060:	eb01f2ea 	bl	6008cc10 <foo>

6008cc10 <foo>:
6008cc10:	e0810000 	add	r0, r1, r0
6008cc14:	e12fff1e 	bx	lr

可以看到,纯运算类的体积与性能,与C版本完全一致,
其它高级特性可能会对堆的使用较多,但只要遵守rust的规范,写穿溢出的可能性应该极小。
纯运算和对栈的使用,应该不会有太大的差异。

#325 Re: 全志 SOC » f1c100/200s 的中断是否可以被高优先级中断打断? » 2020-12-23 23:24:27

FIQ可以抢IRQ,但这类芯片上软件基本放弃中断抢占了。

#326 Re: 全志 SOC » 计划手写一份纯C版AI深度学习推理引擎,并支持硬件加速接口,大家有啥意见及建议,还请不吝惕教。 » 2020-12-16 19:41:56

xboot 说:

已将valloc删除,改用malloc函数,如果malloc函数分配出来的内存能保证double类型对齐,那么在不考虑avx512指令加速的情况时,所有的内存分配都可以使用malloc实现,但申请对齐内存这个如何实现跨平台,待考虑。

自己实现一个 malloc_align/free_align 里面还是调用malloc,但得多浪费点。

#327 Re: 全志 SOC » 计划手写一份纯C版AI深度学习推理引擎,并支持硬件加速接口,大家有啥意见及建议,还请不吝惕教。 » 2020-12-16 19:33:09

xboot 说:

已将valloc删除,改用malloc函数,如果malloc函数分配出来的内存能保证double类型对齐,那么在不考虑avx512指令加速的情况时,所有的内存分配都可以使用malloc实现,但申请对齐内存这个如何实现跨平台,待考虑。

自己实现一个 malloc_align/free_align 里面还是调用malloc,但得多浪费点。

#328 Re: RISC-V » 在K210上使用wifi联网 » 2020-12-16 19:31:17

这么多线应该是用的SPI

#329 Re: 全志 SOC » 求助关于F1c100s如何流畅的解码视频 » 2020-12-16 12:45:51

用的模块,自己配10寸大屏来放的,不过画面没有全屏放。
https://item.taobao.com/item.htm?id=586627082894

#332 Re: 全志 SOC » 全志V831芯片裸机开发日记--移植V831到xboot » 2020-12-10 15:47:24

xboot 说:

最难啃的骨头已搞定,剩下的就看各位道友各显神通了,我的任务完成了。

搞点白菜板来玩玩,哈哈。

NPU部分得要原厂给支持了,不用NPU没灵魂。

#333 Re: 全志 SOC » 全志V831芯片裸机开发日记--移植V831到xboot » 2020-12-10 08:44:24

楼主真早,虽然暂时用不到,但相关姿势可以借用。

#334 Re: 全志 SOC » 全志V831芯片裸机开发日记--移植V831到xboot » 2020-12-09 18:05:55

>>直接利用闭源二进制

妙,只要里面别乱引用其它东西。

#336 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 编译rt-thread的audio.c文件报错,请大家帮看下错在哪里? » 2020-12-07 16:09:02

感觉你不是用scons生成的工程,没有添加 include path.

而是把xx.h直接添加到mdk中,然后希望可以不用设置 include path.

#337 Re: 全志 SOC » 全志V831芯片裸机开发日记--移植V831到xboot » 2020-12-07 12:12:25

有cache的情况下,非对齐访问结果好像也是正确的。可以关闭检测。
非cache部分,可以打开,再软件修正? 但好像无法动态切换。

#342 Re: 全志 SOC » f1c100s 官方bsp没有整合 电阻触摸屏(RTP)驱动, 现在在主线Linux上面找到驱动了 » 2020-11-19 20:34:36

#define TOUCHPANEL_INTERRUPT       (20)

rt_hw_interrupt_install(TOUCHPANEL_INTERRUPT, you_touch_handle, param, "touch");

#345 Re: Xilinx/Altera/FPGA/CPLD/Verilog » 想用国产FPGA真不容易 » 2020-11-06 17:46:51

Sipeed的资料做得很不错了,部分没资料的是因为源头没资料。

#346 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 不拆SoC,不用X光机,利用已知IO探测未知的IO连接情况 » 2020-10-30 17:27:06

metro 说:

之前看过一个更骚的操作(仅对于FPGA有效),可以给每个引脚安排一个输出当前引脚编号的UART发送单元,之后只需要用一个串口模块就能读取每个信号的对应引脚编号了。

NB

#347 Re: ESP32/ESP8266 » 请问ESP32-CAM获取OV2640的JPEG(1600*1200)并从Wi-Fi传出,帧率最高能到多少? » 2020-10-23 11:37:43

楼上的测速我是相信的,确实可以达到。
但是这是测试环境,实际环境中,有时也能到20,但偶尔会掉下来,这点是要考虑到的。
如果能接受,这项目可行性就没问题。

#348 Re: ESP32/ESP8266 » 请问ESP32-CAM获取OV2640的JPEG(1600*1200)并从Wi-Fi传出,帧率最高能到多少? » 2020-10-22 23:11:56

80K 1张,10帧就是800KB每秒,加队列勉强可以达到,但不稳定,也不能保证稳定的间隔,2.4G WIFI 单天线11N就这样子。
这还不考虑干扰的问题。

1. 上网线
2. 上支持264/265压缩的芯片,降低数据量。

#352 Re: 全志 SOC » RTT下的CSI调试 » 2020-09-23 20:29:02

没用过CSI接口,是否传感器的配置问题?
现在调试现象是啥? 楼主是怎么判定问题的?

#353 Re: Cortex M0/M3/M4/M7 » 关于STM32L476 SRAM2的使用 » 2020-09-11 21:09:59

留意下2块RAM的差异,应用上有必要的话,自己分开。

#355 Re: 全志 SOC » v3s没有i2s外设 有没有什么spi sdio 等能转i2s信号的芯片 最好有现成的linux驱动的 » 2020-09-10 11:05:44

zzm24 说:

之前试过用CPLD SPI转I2S,成本高放弃了
直接上V3S马甲R11了,自带I2S

大佬用来做啥东东?

#356 Re: 全志 SOC » V3s/F1C00S这种芯片,如果单纯跑裸机的话,MMU有没有必要打开啊? 有没有大佬解惑一下? » 2020-09-08 19:02:31

开cache后,刷完屏记得刷新cache.不然可能屏上面还有一部分是老的内容。

#363 Re: RISC-V » vscode的插件platformio,目录结构该如何规划? » 2020-08-26 11:15:18

libraries\n22\env_Eclipse\init.c 里面有个 init 函数 ,你在 board.c 中手动调用一下看看。
感觉是心跳没起来

#367 Re: 全志 SOC » 请教大家, 两片 V3s 的以太网口能不能不通过隔离变压直连, 因为只有2CM距离 » 2020-08-14 12:28:27

看是否支持 reverse RMII ?如果支持的话,RMII直连,PHY都不要了。
如果不支持,2个PHY之间是可以电容耦合的,主要看PHY是电压驱动类型还是电流驱动类型。

不过,同个板上,根据你的通讯速度,UART/SPI/USB也是可以看看是否用得上。

#371 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 各位公司内部都用什么管理软件? » 2020-08-06 11:56:14

小团队的话,gitlab基本上全有。
图纸当二进制文件,直接git管理。
代码直接git,还有自带CI
项目进度可以用 里程碑+issue+看板
知识库用 wiki
一些小讨论,可以用issue,有点论坛的效果
聊天有网用qq wx,没网用飞鸽。

#373 Re: 全志 SOC » F1C100S GPIO中断延迟比较大 » 2020-07-17 09:56:41

我这用过一个IO中断是由32K时钟驱动的,中断延迟就有90多us。
我用来做SPI 从机通讯模块,这响应太慢了。
好在有输入捕获可以用,这个就快多了。

#376 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 求推荐显卡 » 2020-06-24 07:42:12

先搞个亮机卡,烤鸡测试无问题后再换显卡。
另外检查下电源是否足够带得动。

#384 Re: Cortex M0/M3/M4/M7 » CM3内核学习疑惑 » 2020-04-22 09:48:12

1. 去下载ARM的技术手册啊,实际用的时候有CMSIS的库,还有芯片厂家提供的库,不用自己抠寄存器。
2. 看ATPCS
5. 堆和栈 没有任何关系
6. 1

#385 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 给大家推荐一款联通的流量卡, 年付8元, » 2020-04-10 19:22:44

今天电话回访了,说银行卡可能退不成功,直接加我微信退款了。
至此销号成功,拨打提示已停机。

#387 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 给大家推荐一款联通的流量卡, 年付8元, » 2020-04-07 12:20:34

打到了APP中的位置
001.png
缴清欠款
Screenshot_20200407_120038.jpg
最后一步提示无法办理。

提示还需要先充50,防止其它扣费不足,就再充了50。

然后还是不成功。晚上再试,不行只能电话投诉了。
Screenshot_20200407_121123.jpg

#388 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 给大家推荐一款联通的流量卡, 年付8元, » 2020-04-07 11:58:17

我的现在提示停机了,打算注销。
APP上面没找到地方,感觉被坑了,需要去营业厅门店面。

#389 Re: 全志 SOC » 测试了一下RTT中用DMA和for循环拷贝128K花费的时间 » 2020-04-02 15:10:39

CPU拷贝刷cache没?
for拷贝每次拷贝多少字节?

这些也会稍微影响性能。
不过这芯片的主频比总线快不少,所以这块影响不是很大。

#391 Re: 全志 SOC » 求助RTT中有无cache safe之类的内存分配函数? » 2020-04-01 18:54:04

技术上可以做到。
MMU映射时,1:1映射1片无CACHE的空间。
这样正常出来的内存地址,做一下地址转换就行了。

参考

const struct mem_desc platform_mem_desc[] = {
	{0x00000000, 0x03FFFFFF, 0x00000000, NORMAL_MEM},	/* DDR 64M */
	{0x10000000, 0x13FFFFFF, 0x00000000, DEVICE_MEM},	/* 加这行 DDR 64M non-cache */
	{0xB0000000, 0xB3FFFFFF, 0xB0000000, DEVICE_MEM},	/* IO 64M */
	{0xFFF00000, 0xFFFFFFFF, 0xFFF00000, DEVICE_MEM},	/* SYS 1M */
};

但是
内存操作带CACHE,再刷cache.

性能远远高于无cache直接操作的。

#397 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 为什么我ssh连接远程服务器, 用&运行一个后台命令,由于我主动退出了ssh终端,这样刚刚运行的后台命令也挂了? » 2020-03-31 15:33:05

为了避免断线,可以考虑使用screen来执行命令。

先设置一下screen配置,在/etc/screenrc末尾添加如下内容。

```shell
caption always "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%H %Y-%m-%d %c %p"
```

这样screen的终端最下面有显示标签,方便辨认。

screen常用命令

screen -list
列出所有会话

screen -dmS name
新建一个会话,后面是会话名称

screen -d name
强制断开一个会话,用户于其它用户连接了某个会话,但他断网,要很长时间才能自动断开。

screen -r name
登入某个会话

在会话中,按住ctrl,依次再按a,d, 就可以安全离开这个会话,里面的命令继续执行。

#398 Re: 全志 SOC » 基于RTThread的F1C100s开发(带boot启动+硬件多图层+硬件游标+LVGL+SDIO) » 2020-03-26 16:11:00

给楼主点个赞!

楼上的同步是用什么方案? 有自动监控文件变动吗? 还是定期自动刷新?

#401 Re: ESP32/ESP8266 » esp32中被人忽略的超低功耗协处理器ulp » 2020-03-23 18:02:15

ESP32-S2 里面还多了一个 ULP-RISCV
应该更好玩

#404 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 请问大家现在还有没有免费的通配符域名SSL证书? » 2020-03-17 11:39:42

看收费证书对比就知道了,有些老旧些的设备不支持 Let's Encrypt 的CA,以及浏览器显示的标识不同。
但是做小网站足够了,真香。

如果银行也用 Let's Encrypt,就显得不合适了。

#406 Re: ESP32/ESP8266 » 比ESP8266性价比更优的wifi芯片来了 ----- W600 » 2020-03-11 10:03:00

smartcar 说:

裴讯,是认真的么?怎么替换,app自己写的么,替换后有什么新发现吗?

我是跟着这位楼主学习
https://www.amobbs.com/thread-5716874-1-1.html

#407 Re: ESP32/ESP8266 » 比ESP8266性价比更优的wifi芯片来了 ----- W600 » 2020-03-10 10:08:57

在PDD买了几个裴讯的智能插座,然后用W600给替换了,现在天天用着。

#415 Re: 全志 SOC » F1C100S有人裸机跑过SPI跟DMA吗 » 2019-12-25 15:12:56

同样的固件,正常的板子,波形就很正常。
none.png

#416 Re: 全志 SOC » F1C100S有人裸机跑过SPI跟DMA吗 » 2019-12-25 15:02:31

我这抓到同样的波形,换了个板子就好了。
但我SPI时钟设置的是2M,开始以为是逻辑分析仪坏了,换上示波器才发现问题。
感觉是芯片里面某个驱动MOS烧了的原因造成的。
还有没有小伙伴遇到同样的问题?
楼主后面怎么解决的?

2.png

#422 Re: 全志 SOC » 全志R11核心板和底板(主要跑RTT和柿饼UI) » 2019-11-15 18:02:20

mango 说:

你手里有板子还来围观干啥子~~~~

我这边没有,真没有。同事那边有!

#424 Re: 好钜润半导体(TIKY) » TK499想移植rt_thread来跑下,谁有没有资料分享下 » 2019-11-14 11:03:57

642242855 说:

厂家给的资料连shell都没有,看到了你这个,我也赶紧把自己吃灰的板子出来擦擦:D

欢迎入坑

#425 Re: 好钜润半导体(TIKY) » TK499想移植rt_thread来跑下,谁有没有资料分享下 » 2019-11-13 11:37:23

相比原厂提供的,做了一些改动,这样比较符合rt-thread推荐的组织结构。
也方便后期加入更多的驱动和组件 。

目前还只能闪灯并执行shell。
有兴趣的小伙伴可以从TODO里面的pin驱动这些做起。

#426 Re: 好钜润半导体(TIKY) » TK499想移植rt_thread来跑下,谁有没有资料分享下 » 2019-11-13 11:33:58

昨天晚上收拾桌子,发现吃灰的板子。
刚好看到这个贴子,所以做了一个初步的版本,欢迎入坑 & pr。

https://gitee.com/aozima/TK499_rt-thread.git

#437 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » sigrok pulseview 逻辑分析仪 触发点解析出错的解决办法 » 2019-09-26 10:11:21

aozima
回复: 2

一直有了解到 sigrok 的开源逻辑分析仪项目,但一直没用起来。
这次买了一个 Saleae 的CY68013的基础版本,终于是跑起来了。 https://whycan.cn/t_2890.html#p23740

但是在解析UART协议时,发现第一个起始点的下降沿无法正确解析,造成数据出错。
uart.png

在 sigrok  的 bugzilla 发了贴,发现可以设置信号的初始状态。这功能默认是关闭了。
没有好好看文档,所以走了弯路。
https://sigrok.org/bugzilla/show_bug.cgi?id=1418

1。 在配置中允许设置信号的初始状态
allow_initial_state.png

2. 在UART协议中设置初始状态
initial_state.png

3. 此时可以正确解析
uart_ok.png

#442 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » org域名不能备案吗? » 2019-09-24 19:29:50

幸好以前备案了,现在不动的话还能继续用。

所以已经备案成功的  org 等域名,千万不要修改网站信息。

#444 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » Saleae 逻辑分析仪软件目前还不能分析SDIO协议, 但是官方网站给了一个非正式的版本,怎么是源码的,应该如何编译/安装/使用呢? » 2019-09-19 18:47:28

新买了一个不带FPGA的,只有一片68013的逻辑分析仪,软件能正常使用了。
不过设置UART为低电平触发,或是下降沿触发,UART协议解析并不能正常解析数据。
因为第一个低电平 不能识别为起始位。 后面的数据就全错了。让一直采样,然后UART再发送数据,就能正常解析。
看来得去报个BUG,不行自己修修

#446 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » Saleae 逻辑分析仪软件目前还不能分析SDIO协议, 但是官方网站给了一个非正式的版本,怎么是源码的,应该如何编译/安装/使用呢? » 2019-09-16 10:36:06

这个SDIO要自己编译出DLL,然后放到协议分析的目录中去。
我以前编译过,因为要修改一下SDIO时钟边沿。

后面直接使用梦源的逻辑分析仪来处理了。

另外, sigrok的PulseView 连接 我的 Saleae 以及 梦源逻辑分析仪 都没能成功。

#449 Re: 全志 SOC » F1C100S是不是接了JTAG就没发用SD卡? » 2019-08-17 20:45:57

JTAG一般就前期调一些硬件相关的,后面就纯软件的多了,尽量少用JTAG。
或必须用JTAG时,可以暂时不用SD卡。

#450 Re: ESP32/ESP8266 » RTL8710大家玩过没有?我来共享一下资料 » 2019-08-15 17:14:50

2B青年欢乐多 说:

用过RTL8711BN  不过Realtek的87系列芯片有个问题就是b模11M的时候TRP TIS有点差  当时搞这个的时候吃尽了苦头

后面咋解决的?

#452 Re: 全志 SOC » 请教一下大家,电源芯片与触摸芯片在同一个IIC上,现在启动不了, » 2019-08-05 10:10:04

1.  断开触摸芯片看能否启动
2. 上逻辑分析仪看具体发生了什么

#453 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 1块钱包邮的圣芯 8051 HC89S003F4 开发板(自带仿真器), 手快有,手慢无 » 2019-08-05 00:09:58

posystorage 说:

送5片样片。
调试器上是stm32f103c8 +6个1t45+存储器25Q

还送了样片么,早知道我就不买芯片了。

#455 Re: ESP32/ESP8266 » https访问一定要证书吗? » 2019-08-01 18:49:38

根证书多了也占空间,一般嵌入式设备只把关键应用的服务器根证书导入。

#459 Re: 全志 SOC » F1C100S U盘速度 » 2019-07-23 21:14:18

佩服佩服,裸奔驱动u盘的

#460 Re: Cortex M0/M3/M4/M7 » TKM32F499 M4核心,内置8MB SRAM的单片机来啦,批量20块钱1片 » 2019-07-16 16:24:13

wujique 说:

芯片是好巨润做的?
细分行业芯片做得好,也是非常不错的。
例如现在扫码,如果能出一个200M主频,RAM 512K,FLASH256~512,就能运行zbar了。
价格十块钱之下,在扫码盒子案子上就很有优势,出货量大。

我最近在搞这样的方案,主频低了主要是图像预处理略吃力些。

#463 Re: ESP32/ESP8266 » esp32+8388边录边播问题 » 2019-07-10 18:30:21

一个I2S就可以了呀~

录回来的重采样下就可以得到语音常用的8K或16K采样率。

#465 Re: 全志 SOC » 低成本F1C200S核心板画好了哦,去打样喽 » 2019-06-29 15:16:58

>空载电流在58mA,关机电流在50mA。

有点想笑怎么办

#471 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 朋友公司有一个linux二进制程序只有一份,,以前别的公司留在服务器的,今天不小心删除了 » 2019-05-31 15:13:58

不如联系下那个公司?

或试着恢复下硬盘,ext3/4都是日志型的文件系统,应该可以恢复的。
用dd把硬盘拷出来,下到本地分析

页脚

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

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