您尚未登录。

#3 Re: 工业芯 匠芯创 » 有没有好用迷你的程序和gui工具推荐? » 2024-04-23 08:55:55

现在用的 PyQt??

如果不嫌界面丑,,可以试试 Tkinter,,

#4 Re: RISC-V » RISC-V 如何实现 __disable_irq()? » 2024-04-16 12:38:56

506826164@qq.com 说:

沁恒这个全局中断实际还是mstatus中MIE和MPIE的映射,能在用户模式下操作

那看来在这点上沁恒没有严格遵照规范。。

不过也没啥,,也不一定非要严格遵照规范,,只要最终用起来方便、不会产生逻辑错误就OK

#5 Re: RISC-V » RISC-V 如何实现 __disable_irq()? » 2024-04-16 08:56:23

xiaorui 说:

大神能帮解读下吗?下面这个是哪个文档中的?

两个截图都是《The RISC-V Instruction Set Manual Volume II: Privileged Architecture》中的内容

#6 Re: RISC-V » RISC-V 如何实现 __disable_irq()? » 2024-04-15 19:03:58

在 spec 上找到一个对此问题更清晰的描述

trap_to_M-mode.jpg

#7 RISC-V » RISC-V CLINT 中断处理与中断嵌套 » 2024-04-15 09:43:37

XIVN1987
回复: 0
volatile int timer_n = 0;


void timer_handler (void) {
    timer_n++;
}

timer_handler:
    lui     a0, %hi(timer_n)
    lw      a1, %lo(timer_n)(a0)
    addi    a1, a1, 1
    sw      a1, %lo(timer_n)(a0)
    ret


__attribute__((interrupt))
void timer_handler (void) {
    timer_n++;
}

timer_handler:
    addi    sp, sp, -16
    sw      a0, 12(sp)                      # 4-byte Folded Spill
    sw      a1, 8(sp)                       # 4-byte Folded Spill
    lui     a0, %hi(timer_n)
    lw      a1, %lo(timer_n)(a0)
    addi    a1, a1, 1
    sw      a1, %lo(timer_n)(a0)
    lw      a0, 12(sp)                      # 4-byte Folded Reload
    lw      a1, 8(sp)                       # 4-byte Folded Reload
    addi    sp, sp, 16
    mret

对比发现,添加 __attribute__((interrupt)) 修饰后,编译器给用到的寄存器添加保存、恢复代码,并将 ret 替换为 mret.

既然 ISR 对自己使用的寄存器都会提前保存、返回时恢复,,那么发生中断嵌套就不会破坏 ISR 的上下文环境,,可以允许中断嵌套的发生

但是在中断返回时 CPU 需要 mepc 和 mstatus 中的信息确定返回地址和返回特权级,,这些寄存器编译器没有给我们保存、恢复,,因此还需要手动添加代码处理

__attribute__((interrupt))
void timer_handler (void) {
    int mepc, mstatus;

    asm("csrr %0, mepc\n\t"
        "csrr %1, mstatus\n\t"
        "csrsi mstatus, 8"      // mstatus.MIE = 1, interrupt enable
        : "=r" (mepc), "=r" (mstatus));

    // ISR code

    asm("csrci mstatus, 8\n\t"  // mstatus.MIE = 0, interrupt disable
        "csrw mepc, %0\n\t"
        "csrw mstatus, %1"
        : : "r" (mepc), "r" (mstatus));
}

实现中断嵌套的关键是在重新使能中断之前保存 mepc、mstatus,并在执行 mret 之前恢复它们

但在 CLINT 下实现中断嵌套没有意义,因为 CLINT 下没有中断优先级,中断嵌套只有配合可配置的中断优先级才有意义。所以一般 MCU 厂商会使用更高级的中断控制器替代 CLINT,而不会直接使用官方简陋的 CLINT,,比如沁恒 MCU 使用了自己设计的 PFIC 中断控制器,,添加了中断优先级等功能。。

#8 RISC-V » RISC-V 如何实现 __disable_irq()? » 2024-04-12 13:51:39

XIVN1987
回复: 6

之前一直以为 mstatus.MIE 可以用作中断的全局总开关,,仔细看了 spec 才发现并不能

根据下面这说法,,如果程序正在用户模式执行,,然后来了中断,,即使 mstatus.MIE == 0,也会切换到机器模式去执行中断处理函数。。

mstatus.MIE.jpg

所以 RISC-V spec 里面并没有一个全局关闭中断的方法,,

查看沁恒驱动库中的 __disable_irq() 实现可以看到,,它是通过地址为 0x800 的 CSR 寄存器实现的,,而这个地址属于“User-Level Custom read/write”区,,也就是说,这是一个芯片厂商自定义的寄存器

RV_STATIC_INLINE void __disable_irq()
{
  __asm volatile ("csrw 0x800, %0" : : "r" (0x6000) );
}

#9 Re: Cortex M0/M3/M4/M7 » 求教如何让MCU上电时立即halt » 2024-03-30 09:58:29

MCU一般都有ISP功能吧,,通过ISP把程序擦掉不就好了。。

#10 Re: 工业芯 匠芯创 » RISC-V 相比ARM核,ArtInChip D211系列性能测试大解密,数据供参考。 » 2024-03-25 16:32:31

@海石生风

RISC-V 指令集中,P 是 Packed SIMD,类似于 ARM 处理器的 SIMD/NEON 功能,,V 是 vector 扩展,,是另一套指令集。。

#11 Re: 工业芯 匠芯创 » RISC-V 相比ARM核,ArtInChip D211系列性能测试大解密,数据供参考。 » 2024-03-25 13:46:24

海石生风 说:

D211对比A7还有一个优势,A7的NEON需要特殊的数据结构才能实现SIMD、而RISC-V的RVV不需要特殊数据结构只要给定数组就能开启SIMD加速。

可惜 D211 没有 RVV 扩展。。

#12 Re: 工业芯 匠芯创 » D211DCV+W25N01GVZEIG 烧录固件不成功问题求助 » 2024-03-23 15:29:02

https://whycan.com/t_10422.html

我之前画了一块也是无法烧录,,怀疑是不是因为 SDNAND 连线没画等长,,看你这个画了等长还是烧录失败,,不好搞。。

#13 Re: Cortex M0/M3/M4/M7 » 许久没来水个帖,瑞萨RA8D1超频到720MHz,CoreMark跑出4000分 » 2024-03-22 15:47:52

Gentlepig 说:

这个相较于现在见到比较常见的rsicv e907核的单片机,怎么样啊?

E907 datasheet 上标的 3.85 Coremark/MHz (O3),,比 Cortex-M4 官方标的 3.54 CoreMark/MHz 高点儿。。

#14 Re: Cortex M0/M3/M4/M7 » 许久没来水个帖,瑞萨RA8D1超频到720MHz,CoreMark跑出4000分 » 2024-03-22 14:37:42

@海石生风

M7 和 M85 官方给的 CoreMark 分别是 5.29 和 6.28,,提升大概 (6.28 - 5.29) / 5.29 = 19%

#15 Re: Cortex M0/M3/M4/M7 » 许久没来水个帖,瑞萨RA8D1超频到720MHz,CoreMark跑出4000分 » 2024-03-22 12:55:26

查了下,,M85 性能确实比 M7 更高。。原来 M85 也是双发射的,,而且还支持指令融合,,

M85_vs_M7.png

#16 Re: Cortex M0/M3/M4/M7 » 许久没来水个帖,瑞萨RA8D1超频到720MHz,CoreMark跑出4000分 » 2024-03-22 09:44:17

Cortex-M7 是双发射的,,

M7 内核的 RT1170 主频 1GHz,,CoreMark 6400 多。。所以论性能 M85 应该还是不如 M7 的

#17 Re: Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » 如何使用 Pyserial 访问 OrangePi 3B 的串口 » 2024-03-17 17:14:31

搜了下,,发现这个问题四年前就有人提了,,可惜还没解决。。有人提了 pr,,但作者还未 merge

/dev/ttyS0 being filtered out by list_ports on Raspberry Pi

#18 Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » 如何使用 Pyserial 访问 OrangePi 3B 的串口 » 2024-03-17 12:03:19

XIVN1987
回复: 3

使用 orangepi-config 使能 UART2 后,,在 /dev 下可以看到 ttyS2,,但如下代码查询结果为空:

In [10]: from serial.tools.list_ports import comports

In [11]: comports()
Out[11]: []

查看 comports 实现如下:
pyserial_comports.jpg

逐句执行 comports 语句:

In [16]: glob('/dev/ttyS*')
Out[16]: ['/dev/ttyS9', '/dev/ttyS7', '/dev/ttyS2', '/dev/ttyS1']

In [17]: [SysFS(d) for d in _]
Out[17]:
[<serial.tools.list_ports_linux.SysFS at 0x7f88996830>,
 <serial.tools.list_ports_linux.SysFS at 0x7f88997550>,
 <serial.tools.list_ports_linux.SysFS at 0x7f889979d0>,
 <serial.tools.list_ports_linux.SysFS at 0x7f889a54e0>]

In [18]: [d.subsystem for d in _]
Out[18]: ['platform', 'platform', 'platform', 'platform']

可知 comports 是识别出了串口 ttyS2 的,,但又因为它的 subsystem 属性值为 platform,,又把它丢弃了。。

不知道这是 pyserial 的问题,,还是 OrangePi 系统的问题,,怎样修改才比较合理??

#19 Re: 全志 SOC » ARM 开发指令 对于嵌入式开发 重要吗 » 2024-02-23 11:27:46

手写汇编??

RISC指令集汇编对人工手写很不友好,,感觉能看懂就行了,,没必要手写。。

#20 Re: Cortex M0/M3/M4/M7 » 让 CMSIS-DAP DAPLink 功能和性能上升到新高度 » 2024-02-21 14:32:29

@llinjupt

没必要支持那么多协议,,把最常用的几种做好、做稳定就很好了。。

AVR、PIC、430 这些用的很少了,,没必要支持。。

#23 Re: Cortex M0/M3/M4/M7 » 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级? » 2024-01-23 12:47:57

海石生风 说:

大概是因为这个中断要就地执行才有意义吧,如 BKPT触发的时候、到达watchpoint的时候,过了这个村就没这个店了。

你把DebugMonitor中断的优先级设置成最高不就行了。

默认优先级全是0,,全都是最高的

要想让DebugMonitor优先级高,,只能把其他所有用到的中断优先级都改低,,这操作就麻烦了。。

#25 Cortex M0/M3/M4/M7 » 触发 Debug Monitor 异常为何要求其中断优先级必须高于当前优先级? » 2024-01-22 23:52:52

XIVN1987
回复: 4

如下图所示,当 MON_EN = 1 时,发生 debug event 时(如观察点检测到指定地址被写入)并不能保证一定执行 DebugMon_Hander(),而是只有当 DebugMonitor 中断优先级高于当前执行优先级时才会执行 DebugMon_Hander(),否则 debug event 将会被忽略。

为什么会有这种限制?不能像其他中断那样先挂起 DebugMonitor 中断,,等不执行其他中断的时候再执行吗??

DebugMon_ignore.jpg

#26 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 花了小半天 搭了个全新版本 eclipse + gcc ... » 2023-12-26 22:26:57

@musich

费心劳神的到处找破解,,就算找到了还要担心破解有没有病毒、有没有后门,,会不会检测到破解不声不响的故意产生错误编译结果。。

#27 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » rtthread 初始化阶段中断开关是不是有问题? » 2023-12-26 15:49:40

抱歉,,是我搞错了,,rt_hw_interrupt_enable() 并不是直接打开中断,,而是将中断屏蔽设置成指定值。。

#28 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » rtthread 初始化阶段中断开关是不是有问题? » 2023-12-26 15:07:53

XIVN1987
回复: 3

rtthread_startup() => rt_hw_local_irq_disable() 关闭了全局中断
rt_system_scheduler_start() => rt_hw_context_switch_to() => CPSIE I 开启了全局中断

上述开关中断流程,我觉得没有问题。。

但是在二者之间,有如下的调用流程

rt_hw_board_init()
    => rt_system_heap_init()
        => rt_memheap_init()
            => rt_object_init()
                => rt_spin_unlock_irqrestore
                    => rt_hw_interrupt_enable

又把全局中断打开了,,既然中间会打开全局中断,,那一开始的关闭全局中断又有什么意义呢??

#29 工业芯 匠芯创 » 求教,,使用AiBurn烧录,,D211不读写SPINAND直接报错烧录失败,, » 2023-12-16 16:15:48

XIVN1987
回复: 1

首先,,复位之后,,D211是有通过SPI0读取SPINAND的动作的,,说明D211和SPINAND的物理连接没有问题

D211-SPINAND.jpg

D211-BROM-SPI-1.jpg

D211-BROM-SPI-2.jpg

注意:100MHz 采样率下我的逻辑分析仪只能抓取 3 个信号,,所以未抓取 MISO 信号,,请忽略

然后AiBurn中按下“开始”按钮,,烧录失败,,log 内容如下,,但烧录过程中 SPI0 上完全没有任何信号,,请问这个是什么原因??

[debug] Software Version: "1.3.4"
[debug] Machine Name: "WMX-PC"
[debug] System Name: "Windows 10 (10.0)"
[debug] CPU Architecture: "x86_64" 

[debug] Parse the image header from "C:/Users/WMX/Desktop/d211_demo100_nand_page_2k_block_128k_v1.0.0.img"
[debug] Soc type: "d211"
[debug] Board type: "demo100_nand_page_2k_block_128k"
[debug] Image version: "1.0.0"
[debug] Storage type: "spi-nand"
[debug] Storage ID: "P=2K,B=128K"
[debug] Meta count: "13" 

[debug] Refresh the partition tree ...
[debug] Part name: image.target.spl , size: 128528 
[debug] Part name: image.target.uboot , size: 826603 
[debug] Part name: image.target.env , size: 16384 
[debug] Part name: image.target.logo , size: 141709 
[debug] Part name: image.target.kernel , size: 7721688 
[debug] Part name: image.target.recovery , size: 10173439 
[debug] Part name: image.target.rootfs , size: 29585408 

[debug] Current connect type: 0
[debug] There are "1" device available

[debug] Try to connect the ArtInChip device "1:2" ...
[debug] Try to get Usb device hd info...
[debug] Get Usb device hd info success
[debug] The status of ArtInChip device: true
[debug] Start burn online ...
[debug] Progress range: 0 ~ 49743872

[debug] Burn Image file "C:/Users/WMX/Desktop/d211_demo100_nand_page_2k_block_128k_v1.0.0.img" ... 

[debug] Meta 0 image.updater.ddr , size 27408 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 27408
[debug] Offset: 8704 Size: 27408
[debug] Dev "1:2" Send the rest data 27408
[debug] Don't check the result of image.updater.ddr

[debug] Meta 1 image.updater.env , size 16384 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 16384
[debug] Offset: 37376 Size: 16384
[debug] Dev "1:2" Send the rest data 16384

[debug] Meta 2 image.updater.uboot , size 826603 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 826603
[debug] Offset: 53760 Size: 826603
[debug] Dev "1:2" Send the rest data 826603

[debug] Meta 3 image.updater.logo , size 141709 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 141709
[debug] Offset: 881152 Size: 141709
[debug] Dev "1:2" Send the rest data 141709

[debug] Meta 4 image.updater.spl , size 128528 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 128528
[debug] Offset: 1024512 Size: 128528
[debug] Dev "1:2" Send the rest data 128528
[debug] Don't check the result of image.updater.spl

[debug] Meta 5 image.info , size 2048 ...
[debug] Blocksize 4 , chunk 1048576 * 0 , rest 2048
[debug] Offset: 0 Size: 2048
[debug] Dev "1:2" Send the rest data 2048

[debug] Meta 6 image.target.spl , size 128528 ...
[error] The status of device "1:2" error
[warn ] Try to resend firmware component image.target.spl , try count: 1
[warn ] Try to recovery the connection
[warn ] Resend firmware component: image.target.spl
[error] The status of device "1:2" error
[debug] Update "fail_cnt" of "2023-12-16"

#31 工业芯 匠芯创 » 麻烦各位大神帮忙看下我的 AP6212 连线是否有问题,,谢谢。。 » 2023-12-04 23:47:19

XIVN1987
回复: 3

第一次用 WiFi 模块,,不太懂到底需要连哪些信号、可以不连哪些信号,,参考了 OrangePi 3B 等板子的原理图,,画图如下:

现在主要有三个疑惑:
1、BT_WAKE_HOST、WL_WAKE_HOST 是否可以不接??看名字这两个信号和唤醒有关,,那如果主机不休眠,,那是否就不需要被唤醒了?
2、天线连接是否正确,,我选的陶瓷天线,,引脚 1 通过 10pF 电容连接 AP6212 的 WL_BT_ANT 引脚,,引脚 2 悬空
3、VIN_LDO、VIN_LDO_OUT 是否可以悬空不接,,我看有些原理图上是悬空,,有些原理图上是接 10uF 电容。。

官方的产品规格书上也没有推荐的应用电路,,这些疑惑都无处可查,,哪位大神知道麻烦指点下,,谢谢。。


AP6212.jpg

#32 Re: 工业芯 匠芯创 » 众筹一个有跟的么?D133BBS的已设计好 D133CBS的原理图但是PCB还没连线 » 2023-11-30 09:22:01

引脚间距 0.35 太小了,,0.4 也小,,应该 0.5 才合适。。既然定位工业应用,,没必要搞那么小的间距,,

#33 Re: Cortex M0/M3/M4/M7 » 国产王炸中的战斗机-普冉py32f003/py32f030(价格6毛起步) » 2023-11-17 10:47:19

网络孤客 说:
zhenxin 说:

确实太卷了,国民的最便宜的应该是这个N32G003

2毛
48MHz/29.5k/3k
ADC、usart、i2c、spi、比较器

刚刚看了下,,淘宝上有销量的店铺,,最便宜的 1.24 元。。

#34 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 正点原子出逻辑分析仪了,,和DSLogic一样,也是基于 sigrok 开源解码方案。。 » 2023-07-21 17:38:58

david 说:

采样率能到多少

Buffer 模式:基础版 250M,Plus 版 1G
Stream 模式受限于 USB 2.0 的速度,,都只有 100M,,和 DSLogic USB 2.0 版本一样。。

DL16.png

#35 DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 正点原子出逻辑分析仪了,,和DSLogic一样,也是基于 sigrok 开源解码方案。。 » 2023-07-21 11:04:39

XIVN1987
回复: 10

相对于DSLogic,,主要是buffer容量提升了14-16倍,,最高采样率提升了2.5倍,,价格也有所提升。。

感觉最可惜的是依然 USB 2.0 方案,,USB 3.0 就那么难搞吗??
沁恒不是出了 USB 3.0 的 CH569 了吗??难道不好用?

DL16_sigrok.png

#36 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 【新玩具get】AGM AGRV2K,16.8块钱的MCU+FPGA二合一芯片 » 2023-07-10 13:55:06

tpu 说:

datasheet上有提到说,support SDIO/Ethernet。 但从没看到有关SDIO的资料啊。到底有没有SDIO接口呢?

问过了,,没有 SDIO,,想用的话用 verilog 自己写一个

#37 Re: Cortex M0/M3/M4/M7 » Keil 通过 DAPLink 连结 STM32F411 时,不发送 JTAG-to-SWD 序列。。 » 2023-07-05 19:03:02

问题找到了,,应该是因为没勾选下面那个 SWJ 复选框,,勾选上就可以了 sad

Keil_Options_SWJ.jpg

#38 Re: Cortex M0/M3/M4/M7 » DAPLink 连接 STM32F411 奇怪现象:接线某个 GND 时连接失败。。 » 2023-07-05 15:27:55

我把这种现象问了板子的店主,,他说是因为我的 DAPLink 驱动能力不足。。

感觉可能是这个原因:因为用 Jlink 的话,,接 GND1 也大概率能连上。。Jlink 的 SWD 引脚都是由专门的驱动 IC 驱动的,而 DAPLink 是单片机的 IO 直接驱动 SWD 信号。。

不过又感觉很奇怪,,毕竟驱动 SWD 的两个引脚需要多大的驱动能力??而且这三个 GND 为什么用 DAPLink 连的时候还有区别??

搞不懂 sad

#39 Cortex M0/M3/M4/M7 » DAPLink 连接 STM32F411 奇怪现象:接线某个 GND 时连接失败。。 » 2023-07-05 14:54:37

XIVN1987
回复: 3

实验环境如下:DAPLink 是 MuseLab 的 nanoDAP v2.35,,STM32F411 测试板是 WeAct Studio 的 STM32F411CE 核心板 V3.1。

DAPLink_STM32F411.png

如下图,,这个板子有三个 GND,,测试发现,,当连接板子的 GND1 时,无法连接内核,,当连接板子的 GND2、GND3 时,,很容易连接内核

我测了下,,这三个 GND 之间的电阻只有 1 欧姆,,可以认为是连接良好的。。搞不懂为什么会出现这种现象,,

WeAct_STM32F411CE.png

另外,,所还用 PyOCD 作为上位机连接过板子,,接 GND1 连接失败时报错如下:

(vexe) D:\Python38\vexe\Scripts>pyocd cmd -t stm32f412xe
0001519 E Error while initing target: Unexpected ACK value (5) returned by probe [commander]

#40 Cortex M0/M3/M4/M7 » Keil 通过 DAPLink 连结 STM32F411 时,不发送 JTAG-to-SWD 序列。。 » 2023-07-04 21:44:35

XIVN1987
回复: 2

如题,使用 Keil 连接芯片时失败,,通过逻辑分析仪抓 SWD 上的波形发现,,DAPLink 执行 Line reset 之后,,就直接发了 8 个 0,,然后就开始读取 IDCODE 了,,没有发送 JTAG-to-SWD 序列。。

根据网上找到的《Programming Internal Flash Over the Serial Wire Debug Interface》中如下内容,,调试器需要发送 JTAG-to-SWD 序列激活 SW-DP,,才能发送 SWD 命令。。

SW-DP_initseq.jpg

有两种可能导致这个问题:
1、Keil 让 DAPLink 发送 JTAG-to-SWD 序列了,,但 DAPLink 没发
2、Keil 就没让 DAPLink 发送 JTAG-to-SWD 序列

为了区分这两种情况,,我用 WireShark 抓取了一下 DAPLink 的 USB 数据,如下图所示,,结果发现 Keil 确实没让 DAPLink 发送 JTAG-to-SWD 序列。。

请问哪位大佬知道这是什么情况??是 Keil Bug 吗??我用的 Keil 版本是 5.36,,很新的版本,,感觉不应该出现这种 Bug 才对。。

最后,我上传了 WireShark 抓到的数据包,,感兴趣的大侠可以看看。。谢谢。。

WireShark_DAPLink_No_Jtag2SWD.rar

发送 Line reset:
WireShark_DAPLink_No_Jtag2SWD-1.jpg

发送 8 个 0:
WireShark_DAPLink_No_Jtag2SWD-2.jpg

#42 RISC-V » AG32VF407VG下载官方例程失败,,哪位大佬知道什么原因?? » 2023-06-25 19:56:21

XIVN1987
回复: 1

芯片是 AG32VF407VG,用的官方例程中的 example 例程,,只是将 platformio.ini 中的 "board = agrv2k_103" 改成了 "board = agrv2k_407",,下载接口从 jlink-openocd 改成了 cmsis-dap-openocd ,,其他保持不变,,编译成功,,

用 VSCode、Downloader 下载都失败,,Supra 下载逻辑成功后,,再次用 VSCode、Downloader 下载依然失败。。具体现象见下面截图。。

哪位大佬知道这是什么原因,,麻烦指定一下,,谢谢。。

AG32_vscode.jpg

AG32_Supra.jpg

AG32_Downloader.jpg

#43 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 【新玩具get】AGM AGRV2K,16.8块钱的MCU+FPGA二合一芯片 » 2023-06-23 22:42:18

cheng1986 说:

同时支持SWD和JTAG接口

感谢回复,,试了下,SWD 确实可以,,

研究了下,,通过下图猜测,,ARM 的 CoreSight 架构本身就支持通过 SWD 调试 JTAG 设备。。只需要实现 SWJ-DP、DAP bus、JTAG-AP 即可。。

不过 RISC-V 厂商似乎大多数都没使用这种方案,,猜测也许是因为这种用法涉及到 ARM 的专利。。

CoreSight.jpg

#45 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-06-01 23:02:11

@Xure

抱歉,CH32V 的 DMA 我不太熟悉,,可能还需要几天时间调试。。

你可以找到之前没开启 DMA 的代码,,将其中的:
uint8_t in_buff[64];
uint8_t out_buff[64];
改成:
uint8_t in_buff[512];
uint8_t out_buff[512];
试下。。

#46 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-05-31 22:47:47

Xure 说:

@XIVN1987,你好,刚才用串口工具将收发自环试了下,发送简单的数据或文件都收不到;换用上一个版本能接收,确认不是接线的问题;可能哪边有笔误,请查看下

我最新的提交把芯片换成TSSOP封装了,,所以引脚都还了

你拉取最新代码后执行“git checkout  175ec1a531fbca547ae3f85f036a38dee07f18ed"检索出改引脚之前的代码再试

#47 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-05-30 19:28:14

Xure 说:

@XIVN1987,又测试了下,比前面有改善,下载固件能进行一些了,但是一会就停了,和波特率高低似乎没有关系;再用串口工具收发文件测试,比较下来有丢失和延迟,低波特率的时候,似乎情况好一点;麻烦再看看

你好,确实有个bug,,已经修复,,你再试下。。

#48 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-05-29 22:09:53

@Xure

已更新,测试收发大量数据没有问题,,你试下。。

#49 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-05-26 12:00:05

Xure 说:

@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下

我用的测试板是自己画的,,你可以对比下看看:https://oshwhub.com/xivn1987/ch32v307

#50 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-05-26 11:57:20

Xure 说:

@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下

你好,,SWD和CDC功能都是测过的,,可以工作的
刚刚我又重新编译源码下载试了下,,没有问题,,你从github拉取最新代码再试试。。

补充:我昨天修复了一个调试阶段可能CDC不工作的情况,,你拉取最新代码试下,,再不行就检查下硬件电路板吧。。

#51 Re: Cortex M0/M3/M4/M7 » 国产M7来了,分享datasheet » 2023-05-12 13:46:47

echo 说:
XIVN1987 说:

USBHS 集成了 HS PHY,,牛啊,,这点比 STM32H7 强多了

https://whycan.com/files/members/1933/GD32H7_USBHS.jpg

还好吧,CH32V307早都支持了

STM32H7 不支持。。

#52 Re: Cortex M0/M3/M4/M7 » 国产M7来了,分享datasheet » 2023-05-11 21:48:50

USBHS 集成了 HS PHY,,牛啊,,这点比 STM32H7 强多了

GD32H7_USBHS.jpg

#53 Re: PikaPython(嵌入式Python引擎) » 我希望在python中直接访问C语言的全局变量,直接通个python修改或者读取变量,而不通过方法,有什么办法可以实现吗? » 2023-04-21 09:37:53

https://docs.python.org/3/library/ctypes.html#accessing-values-exported-from-dlls

Accessing values exported from dlls
Some shared libraries not only export functions, they also export variables. An example in the Python library itself is the Py_OptimizeFlag, an integer set to 0, 1, or 2, depending on the -O or -OO flag given on startup.

ctypes can access values like this with the in_dll() class methods of the type. pythonapi is a predefined symbol giving access to the Python C api:

opt_flag = c_int.in_dll(pythonapi, "Py_OptimizeFlag")
print(opt_flag)
c_long(0)

#55 Re: 全志 SOC » spi nand flash有什么优点和缺点呢? » 2023-03-23 17:37:34

下图来自米客方德官网,,SDNAND也有SLC的。。

SDNAND.jpg

#56 Re: 全志 SOC » spi nand flash有什么优点和缺点呢? » 2023-03-23 11:37:42

刚刚看到一个磨损均衡的库:https://github.com/azure-rtos/levelx

所以说,,磨损均衡还是挺复杂的,,

#57 Re: 全志 SOC » spi nand flash有什么优点和缺点呢? » 2023-03-23 11:34:07

spi nand的优点是便宜
sd nand的优点是自带损耗均衡、直接写无需擦除(spi nand擦除的时候要把整个块都读出来再擦)

emmc是加强版的sd nand,,速度更快、、价格更高

并行NAND应该很少用了,,

#58 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 各种国产32满天飞,ST还有中国市场吗? » 2023-02-28 10:52:29

海石生风 说:

国产也稳定性好的,比如说台系的新唐,她的5V供电的Cortex-M4似乎全球仅此一家。
"随意涨价"说的是华强吧,我从没遇到这种情况,一个商家代表不了全部。

全球仅此一家你也敢用?这不把自己和这颗芯片绑死了吗?
万一新唐大幅涨价怎么办?

#59 Re: Cortex M0/M3/M4/M7 » 求个推荐,内置高速USB(速度480 Mb/s)PHY的单片机 » 2023-02-10 10:04:56

CH32V305 主频 144MHz、128KB Flash、32KB RAM、TSSOP20 封装、内置 HSUSB PHY、价格 10 块左右,,完美符合楼主的需求了。。

虽然不是 Cortex-M 内核,,但 RISC-V 也不是冷门内核,,现在用的厂家越来越多了,,比如知名WiFi SoC厂商乐鑫之前用的Xtensa ISA,现在出的芯片大多是RISC-V内核的了(ESP32-C2/3/5/6、H2、P4)

前段儿时间用 CH32V305 移植了下 DAPLink (https://github.com/XIVN1987/DAPLink),,用起来感觉和 STM32 那些差别也不大(毕竟都是用 C 语言编程,,又不需要手写汇编),,MounRiver Studio 用起来也还行,,跟 Keil 相比各有长短吧。。

#60 Re: RISC-V » CH32V系列非0等待区使用及简陋的性能测试 » 2023-01-30 15:31:00

CH32V203 的 Flash 是并行 Flash,,还是 QSPI Flash??

如果是并行 Flash 的话,就算不是零等待,也不会慢多少。。如果是 QSPI Flash 的话,,那就惨了。。尤其是跳转指令比较多的时候。。。

#61 Re: Cortex M0/M3/M4/M7 » Tiny-DAPLink:开源CH552实现的CMSIS-DAP v2升级版 » 2023-01-29 09:49:39

@IOsetting

425 有个外设叫“HICK 自动时钟校准(ACC)”,它根据USB主机的SOF包将425的HICK时钟校准到0.25%的时钟精度,,满足USBFS通信要求,,415根本没有这个模块

你看下425的数据手册中“内部时钟源特性”章节,HICK 在 ACC校准条件下精度标的是0.25%,,415数据手册上标注的HICK时钟精度最高也就1%,,不满足USBFS对时钟精度的要求

#62 Re: Cortex M0/M3/M4/M7 » Tiny-DAPLink:开源CH552实现的CMSIS-DAP v2升级版 » 2023-01-28 17:45:46

IOsetting 说:

@XIVN1987
AT32F425 是不是换成 AT32F415 也可以? 415也带USB

415 的 USB 不支持 Crystal-less,,电路不如 425 简单。。

另外 415 没有 SSOP20 封装,,最小封装是 QFN32,,感觉不如 SSOP20 焊接简单。。

#63 Re: Cortex M0/M3/M4/M7 » Tiny-DAPLink:开源CH552实现的CMSIS-DAP v2升级版 » 2023-01-26 22:05:26

CH32V203F8 3块钱,可以跑到 144MHz,也支持 crystall-less USB。。

如果不想用 RISC-V 的话,,AT32F425F8 3.75元,Cortex-M4 内核,96MHz,,同样支持 crystall-less USB。。

原理图 & PCB:https://oshwhub.com/xivn1987/daplink
源代码:https://github.com/XIVN1987/DAPLink

#64 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-01-20 21:07:21

曾半仙 说:

看了下v305的移植 似乎没有wcid自动安装 v2只是改为了bulk传输

USBHS HID 已经足够快了,,没必要改 v2 WinUSB Bulk 传输,,传输再快 V305 处理不过来也没意义。。

而且 HID 兼容性好,,任何平台上都能用。。

#65 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2023-01-12 21:55:11

曾半仙 说:

看了下增加了v203的支持, 楼主有兴趣移植到ch32v307吗, usbhs的. 疫情放开前搞了一块, 放开后准备玩玩它. 在CDC基础上改了改, 它的中断服务函数没有很好的处理EP0分包, 加入到wcid属性后, 抓包就出错了. 回头看看楼主怎么改的

在搞了,,

现在 DAP_PACKET_SIZE 配置成 64 的时候 SWD 可以工作,,超过 64 的时候就出错,,

我对 High Speed USB 还不熟悉,,这个问题感觉比较难搞,,打算网上搜搜看能不能找到 DAPLink HSUSB 移植的讲解说。。

#66 Re: RISC-V » RISC-V不支持非对齐地址访问非常坑 » 2023-01-05 18:12:20

《手把手教你设计CPU——RISC-V处理器》上的说明

RISC-V非对齐访问.png

#67 Re: RISC-V » RISC-V不支持非对齐地址访问非常坑 » 2023-01-05 18:08:31

是否支持非对齐访问,是实现层面的问题,,RISC-V ISA 本身并不限制是否支持非对齐访问。。

#69 Re: RISC-V » 最权威的 RISC-V 汇编程序员手册 » 2022-11-24 19:16:09

RISC-V 有 RV32E 版本,,16个寄存器。。

#70 Re: RISC-V » 开源一个AB32VG1的开发板 » 2022-11-24 16:37:45

吴助建 说:

SDK绑定RTT这个RTOS,也是醉了。
SDK应该跟什么RTOS都没有关系才对,绑定一个RTOS,不喜欢这个RTOS的,肯定不想用。
对于芯片厂家来说,来个简单的标准库,才是王道。

SOC的SDK一般都会绑定一个RTOS,,比如乐鑫的esp-idf绑定他们自己修改过的FreeRTOS

#71 Re: RISC-V » 国产riscv芯片汇总 » 2022-11-14 11:42:39

海石生风 说:

平头哥收购C-Sky后,C-Sky就转为兼容RISC-V了,所以平台哥的C-Sky就是RISC-V,平头哥收购前的C-Sky版本才是非RISC-V。

从爱普特官网找到的《APT32F102X LIB用户手册》
APT32%20LIB用户手册.png

其中有内容:
APT32%20CK801内核.png

从爱普特官网找到CK801手册
APT32%20CK801手册.png

CK801手册上关于寄存器的说明:
CK801寄存器.png

CK801手册上关于指令集的说明:
CK801指令集.png

1)RISC-V的内核寄存器R0固定是0,CK801的R0寄存器可传参数
2)RISC-V的指令编码中opcode在低7位,,CK801的指令编码opcode在高位

所以显然APT32F102X的内核CK801不可能兼容RISC-V

#72 Re: RISC-V » CH32V307内置SPI FLASH来自普冉 » 2022-11-13 15:50:53

现在好多单片机是QSPI Flash + SRAM结构啊,,GD32、AT32、CH32,,估计是这么做有价格优势。。

#73 Re: RISC-V » 国产riscv芯片汇总 » 2022-11-10 16:09:06

@海石生风

APT32系列也是玄铁8系列内核,C-sky架构,,并不是RISC-V

搞不懂官方这迷惑的操作,,官网上搞虚假宣传。。

APT32F1021.png

#74 Re: RISC-V » RISC-V核心的SoC有没有已经在产品上广泛使用的型号? » 2022-11-08 20:39:54

aozima 说:

C908在用+1

已经在用?不是内核才刚出来吗?

#75 Re: RISC-V » RISC-V核心的SoC有没有已经在产品上广泛使用的型号? » 2022-11-08 16:22:30

看好平头哥刚刚发布的C908内核,,顺序双发射9级流水线,支持指令融合、向量指令、同构多核,,感觉有Cortex-A55水平

嘉楠科技已经开始基于C908开发芯片了,,后面全志估计也会采用。。

C908.jpg

#76 Re: RISC-V » RISC-V核心的SoC有没有已经在产品上广泛使用的型号? » 2022-11-08 09:30:24

echo 说:

RISC-V在MCU上现在凑合能用了,SoC和ARM差得还很远

你这句话说的不对吧,,应该是“RISC-V在MCU上现在凑合能用了,MPU和ARM差的还很远”

至于SoC,,RISC-V至今出货100亿颗绝大多数都是SoC,,比如WiFi SoC、蓝牙 SoC、TWS 耳机 SoC等,,

比如中科蓝讯三年出货20亿颗 TWS 耳机 SoC,,都是 RISC-V 内核的。。

SoC 的特点是程序都是芯片厂家写好的,,终端厂家一般不需要改代码,,只需要弄个外壳就开卖,,所以这种市场尤其适合那些不流行的内核。。

#77 Re: RISC-V » 博流智能将要推出杀手级芯片bl808(可以跑linux) » 2022-11-03 10:16:28

kekemuyu 说:

cpu间通过ipc通信

当时看到这张图我就很疑惑,,这图的意思难道是说以太网、SD、USB这些高级外设都是单片机外设,跑linux的D0不能访问??
那这些外设还能用linux驱动程序驱动吗??

如果不能,,那这设计也太鸡肋了!!
如果能,,那这框图画的也太误导了!!

#79 Re: RISC-V » 博流智能将要推出杀手级芯片bl808(可以跑linux) » 2022-10-27 20:59:45

USB – 1x USB 2.0 OTG Type-C port with MIPI CSI “alternative” mode

用 USB Type-C 连接 MIPI CSI 摄像头??

还有这种东西??这是什么标准定义的还是博流自己发明的??

#80 Re: Cortex M0/M3/M4/M7 » 国产王炸中的战斗机-普冉py32f003/py32f030(价格6毛起步) » 2022-10-19 10:23:22

8引脚纯属噱头,,起码也得十几个引脚才能用啊。。

#81 Re: RISC-V » WCH又搞了个性价比王炸CH32V003 » 2022-10-17 11:26:17

SOP8引脚太少了,,没啥用,,SOP16不错。。

要是有USB就好了,,可以拿来做DAPLink

#82 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 辣鸡向日葵,花了9元买了一个月的会员,却什么都干不了。我现在自己动手,用FRP这个优秀的开源软件把内网穿透搭起来了 » 2022-09-19 09:41:46

frp 服务器端需要运行在一个有公网 IP 的电脑上吧。。

推荐 StarryFrp,,StarryFrp 提供免费的 Frp 服务端,,最多可免费创建 10 条隧道

#83 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » R5S 运行 Debian 配置成软路由,NAT 不工作,,求教怎么改。。 » 2022-09-18 21:49:01

问题解决了,,解决方法是在 /etc/dhcp/dhcpd.conf 中下面的 subnet 配置中添加 routers 和 domain-name-servers 设置

subnet 192.168.2.0 netmask 255.255.255.0 {
 range 192.168.2.10 192.168.2.250;
 option routers 192.168.2.1;
 option domain-name-servers 8.8.8.8;
}

routers 选项用来设置接入设备的默认网关,这样接入设备就能 ping 通外网 IP 了。。
domain-name-servers 选项用来设置接入设备的域名解析服务器,之前由于笔记本通过 WiFi 获取的 DNS 是主路由的 IP,因此我也将上面的 DNS 设置成了 br-lan 的 IP,,结果发现不能 ping 通域名,,改成 8.8.8.8 就可以了。。

#84 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » R5S 运行 Debian 配置成软路由,NAT 不工作,,求教怎么改。。 » 2022-09-18 15:24:40

补充,,iptable 规则如下:

root@Armbian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  br-lan wifi0   0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  wifi0  br-lan  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

root@Armbian:~# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  *      wifi0   0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

#85 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » R5S 运行 Debian 配置成软路由,NAT 不工作,,求教怎么改。。 » 2022-09-18 11:24:35

执行 ipconfig /all 打印如下,,看起来设置都正常的,,没发现什么问题

无线局域网适配器 WLAN 3:

   连接特定的 DNS 后缀 . . . . . . . : lan
   描述. . . . . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX200 160MHz
   物理地址. . . . . . . . . . . . . : 64-BC-58-05-05-9B
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   IPv6 地址 . . . . . . . . . . . . : fd88:88b7:3d35:0:6584:d263:af42:295e(首选)
   临时 IPv6 地址. . . . . . . . . . : fd88:88b7:3d35:0:a5a8:3e7b:b0f4:5beb(首选)
   本地链接 IPv6 地址. . . . . . . . : fe80::6584:d263:af42:295e%11(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.18.107(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2022年9月18日 6:28:28
   租约过期的时间  . . . . . . . . . : 2022年9月18日 23:16:11
   默认网关. . . . . . . . . . . . . : 192.168.18.1
   DHCP 服务器 . . . . . . . . . . . : 192.168.18.1
   DHCPv6 IAID . . . . . . . . . . . : 577027160
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-28-4B-DA-A9-80-30-49-2D-36-C5
   DNS 服务器  . . . . . . . . . . . : 192.168.18.1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用
   连接特定的 DNS 后缀搜索列表:
                                       lan

以太网适配器 以太网 3:

   连接特定的 DNS 后缀 . . . . . . . : example.org
   描述. . . . . . . . . . . . . . . : ASIX AX88179A USB 3.2 Gen1 to Gigabit Ethernet Adapter
   物理地址. . . . . . . . . . . . . : F8-E4-3B-5B-2C-46
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::f474:2cd3:a8c:c01e%19(首选)
   IPv4 地址 . . . . . . . . . . . . : 192.168.2.10(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2022年9月18日 11:12:34
   租约过期的时间  . . . . . . . . . : 2022年9月18日 11:27:27
   默认网关. . . . . . . . . . . . . : 192.168.2.1
   DHCP 服务器 . . . . . . . . . . . : 192.168.2.1
   DHCPv6 IAID . . . . . . . . . . . : 922281019
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-28-4B-DA-A9-80-30-49-2D-36-C5
   DNS 服务器  . . . . . . . . . . . : 192.168.2.1
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

ip、gateway、dns 服务器都设置了,,可笔记本只连 r5s lan 口的时候就是无法 ping 通外网,,不知道还有哪里设置不对。。

#86 VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » R5S 运行 Debian 配置成软路由,NAT 不工作,,求教怎么改。。 » 2022-09-18 00:59:24

XIVN1987
回复: 4

/etc/network/interfaces 配置如下:

auto eth0
iface eth0 inet dhcp

auto wifi0
iface wifi0 inet dhcp
    wpa-essid xxxxxxxxxx
    wpa-psk xxxxxxxxxx

auto br-lan
iface br-lan inet static
    address 192.168.2.1
    network 192.168.2.0
    netmask 255.255.255.0
    broadcast 192.168.2.255
    bridge-ports eth1 eth2

R5S 通过 USB WiFi 连接主路由,,配置 dhcpd 监听网桥 br-lan,,笔记本通过网线连接 R5S LAN 口
这样配置后,,R5S 通过 WiFi 联通互联网成功,,笔记本分配局域网地址成功,,

接下来只需要配置好 NAT,,笔记本应该就能通过 R5S 联通互联网了,,根据网上搜到的资料,NAT 配置代码如下:

EXTIF="wifi0"
INTIF="br-lan"

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat --flush
iptables -t filter --flush

iptables -t nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE

# Allow traffic from internal to external
iptables -A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
# Allow returning traffic from external to internal
iptables -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

但我执行上述代码后,,笔记本以太网显示“无 Internet”,,笔记本上 ping 192.168.2.1 能 ping 通,,但 ping 192.168.18.1(主路由器IP)ping 不通,,请教我哪里配置有问题?该怎么解决??多谢大侠指教。。

#87 Re: 全志 SOC » 发现linux上的程序安装的时候各种库,配置文件都混合放在一起显得很乱。不能像win一样吗? » 2022-08-22 15:42:36

海石生风 说:

@XIVN1987
Windows、Android用久了就变慢,我Linux用多久不会觉得会慢,也不会爆系统盘空间,Linux清空一下home目录的效果就跟重装系统的一样了。便利都是有代价的,选择是因人而异的,所以不要否定它的存在。

我的意思是:linux适合技术专家使用,Windows、Android即使白痴都能用。。

只有白痴都能用的产品,,才能最大规模的流行。。

我这好像没有否定Linux的意思吧。。相反,我在赞美Linux用户都是技术专家。。

#88 Re: 全志 SOC » 发现linux上的程序安装的时候各种库,配置文件都混合放在一起显得很乱。不能像win一样吗? » 2022-08-22 12:10:50

@海石生风

虽然很多人都吐槽Android的APP体积大,,只有很少的功能APP都几十MB、甚至上百MB。。

但是Android APP几乎没有安装或更新一个APP,,导致其他APP跑不起来的这种情况。。

Android的成功再次证明,,在普通用户市场,,只是用起来傻瓜化、不容易出问题的技术才能成功。。

#89 Re: 全志 SOC » 发现linux上的程序安装的时候各种库,配置文件都混合放在一起显得很乱。不能像win一样吗? » 2022-08-22 12:02:13

@海石生风

每个软件带一个ffmpeg无非也就多占用点儿硬盘而已,现在硬盘这么便宜,这还算事儿吗?

凡是在大众市场成功的OS,全都是采用这种把所有依赖全都一起打包的方式,,比如Windows、Andorid、iOS

而linux这种把APP和依赖库分开的OS,,只能在服务器和开发主机等少数使用者都是专业人事的领域才能成功,,因为普通用户根本处理不了库依赖这种问题。。

deepin也是看清了这种情况,,所以推出了将所有依赖打包到一起的新打包技术“玲珑”,,
如果deepin继续采用传统的deb那种打包方式,,那它注定只能是程序员的OS,,而非普通用户的OS。。

#90 Re: 全志 SOC » 发现linux上的程序安装的时候各种库,配置文件都混合放在一起显得很乱。不能像win一样吗? » 2022-08-22 01:35:59

不止你自己有这种想法,,所以linux世界出现了snap、flatpak、appimage,还有deepin最近推出的“玲珑”

#91 Re: Nuvoton N32905/N32926/NUC972/N9H20/N9H26/N9H30 » MA35D1发布了。 » 2022-08-18 09:58:44

这么高端的芯片,,显示接口只有RGB,,没有HDMI、没有LVDS、也没有MIPI,,是什么考虑?

#93 Re: 全志 SOC » 使用rust对arm9处理器进行裸机开发 » 2022-07-08 10:28:10

底层用C,APP用Go/Java才是更好的选择

Rust对底层特性太多、徒增难度,,对APP没有GC需要自己管理内存,难学、难用

#94 Re: 全志 SOC » USB Type-C 如何实现 OTG? » 2022-06-24 13:36:01

哇酷小二 说:

楼主你这个线估计不能自动切换.

主机上面可以通过命令切换.

买这线的大都是小白用户,,用来给手机、平板连U盘、键鼠的,,要是不能自动切换,还需要手动设置,,那估计很难卖得出去。。

#95 Re: 全志 SOC » USB Type-C 如何实现 OTG? » 2022-06-24 13:15:11

哇酷小二 说:

楼主你这个线估计不能自动切换.

主机上面可以通过命令切换.

很多 SBC(如MongoPi MQ R、Rock Pi S)的 OTG Type-C 母座没有使用类似 PTN5150 这样的芯片,都是直接将 CC1/CC2 通过 5.1K 电阻接地了。

它们应该是没法检测接入的是 USB 主机还是设备的,,只能通过其他人为手段切换 OTG 的主从模式,比如:手动将 OTG ID 引脚接到VDD或GND,或者通过 SBC 上的程序设置 OTG 的主从模式

#96 Re: 全志 SOC » USB Type-C 如何实现 OTG? » 2022-06-24 12:59:51

基本搞清楚了,,好像是需要使用专门的芯片才能实现,比如NXP的 PTN5150
基本原理猜测是:上电 CC1/CC2 引脚悬空,当主机接入时,CC1/CC2 会被主机端上拉电阻拉高;从从机接入时,CC1/CC2 会被从机端下拉电阻拉低,这样就能检测到连接,并能区分出对方是主机还是从机。
区分出以后,若对方是主机,则 PTN5150 将 CC1/CC2 下拉,将自己配置成从机;若对方是从机,则 PTN5150 将 CC1/CC2 上拉,将自己配置成主机。完成主从连接。
另外,这个芯片还通过 ID 引脚输出自己主从模式,传统的 USB 2.0 OTG 的 ID 脚可连接此引脚,得知 PTN5150 的检测结果。

PTN5150.png

#97 全志 SOC » USB Type-C 如何实现 OTG? » 2022-06-24 10:40:57

XIVN1987
回复: 7

Type-C 接口没有 ID 线,它是如何实现 OTG 功能的呢?
比如手机,通过普通的USB线连到电脑上,他被识别成USB设备;通过 Type-C OTG 线连接到 U 盘,它又能做主机?请问手机是检测什么信号确定自己做主机还是从机的?
USB%20Type-C%20OTG.png

#98 Re: RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-13 20:06:44

@taotieren

我不知道,,我没用过这个芯片。。
只是看到功能强大,,所以发到论坛上讨论讨论。。

#99 Re: RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-13 18:08:42

musich 说:

这个还真不是一个档次的,h7真的是单片机,开发环境好。速度才两百M。

这个6730要是有个KEIL/IAR的环境,真能秒天秒地。

HPM6700系列官方推荐的开发工具是SEGGER公司的Embedded Studio,,Segger就是出Jlink的那个公司,,应该还是比较靠谱的,,而且Embedded Studio用于HPM6700开发不收钱、可免费使用

IAR本身也已经支持RISC-V开发了,,而且HPM6700的内核是Andes D45,,Andes是IAR的合作伙伴,,估计过不了多久IAR就会添加对HPM6700的支持

#100 Re: RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-11 11:16:14

比较不解的是:这么强的性能、集成了这么高级的外设,,为啥只支持 SDRAM,,而不支持 DDR,,感觉这样内存带宽不太够啊。。

#101 Re: RK3288/RK3399/RK1108 » WSL下编译buildroot,sysroot/usr/share/terminfo 下的目录名都是 ASCII 码,请问怎么解决? » 2022-05-11 11:02:44

编译完成了,,成功生成了 sdcard.img,,

没有遇到其他网友说的需要“用fakeroot-tcp替换fakeroot-sysv”的问题

过程还算顺利,,就遇到两个问题,,除了楼上那个问题,,另一个是 WSL 中 Ubuntu 的 PATH 会包含 Windows 的 PATH,,而 Windows 的 PATH 路径可能包含空格,,导致编译出错,,解放方法是使用 “PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin make” 临时覆盖 PATH

看起来 WSL 下编译 Buildroot 还是可行的。。

#102 Re: RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-11 10:04:53

看起来超过了 ST STM32H7、NXP RT1170,,成为最强 MCU

#103 RISC-V » 性能最强的 RISC-V 内核单片机:HPM6750 » 2022-05-11 09:59:10

XIVN1987
回复: 32

HPM6750.png

CPU 很强:Andes D45内核,RV32IMAFDCP 指令集, 顺序双发射 8 级流水线,主频 800 MHz,9220 CoreMark、4651 DMIPS

外设也很强:双千兆网、双高速USB(集成 PHY)、4 CAN FD

#104 Re: RISC-V » 与 ARM 相比,Risc-V 有多好? » 2022-05-11 09:49:03

好在开源,,有多个IP提供商,,可以砍价 big_smile

#106 Re: RK3288/RK3399/RK1108 » WSL下编译buildroot,sysroot/usr/share/terminfo 下的目录名都是 ASCII 码,请问怎么解决? » 2022-05-11 00:37:35

还没有找到目录名变成数字的根源,暂时想到一个方法避免手动拷贝,,先走通编译流程吧

找到 buildroot\package\ncurses\ncurses.mk 中如下内容:

define NCURSES_TARGET_CLEANUP_TERMINFO
	$(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset
	$(foreach t,$(NCURSES_TERMINFO_FILES), \
		$(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(t) \
			$(TARGET_DIR)/usr/share/terminfo/$(t)
	)
endef

可知,第一个 $(t) 指定源地址,第二个 $(t) 指定目的地址,只需要将第一个 $(t) 的第一个字符转换成其 ASCII 码数字应该就可以编译了

不懂 shell 怎么处理字符串,,用 python 处理,改成如下内容:

define NCURSES_TARGET_CLEANUP_TERMINFO
	$(RM) -rf $(TARGET_DIR)/usr/share/terminfo $(TARGET_DIR)/usr/share/tabset
	$(foreach t,$(NCURSES_TERMINFO_FILES), \
		$(INSTALL) -D -m 0644 $(STAGING_DIR)/usr/share/terminfo/$(shell python3 -c \
			"import sys; t = sys.argv[1]; t = f'{ord(t[0]):x}{t[1:]}'; print(t)" ${t}) \
			$(TARGET_DIR)/usr/share/terminfo/$(t)
	)
endef

#107 Re: RK3288/RK3399/RK1108 » WSL下编译buildroot,sysroot/usr/share/terminfo 下的目录名都是 ASCII 码,请问怎么解决? » 2022-05-09 14:52:53

网上查到有人遇到相同的问题,他的解决方法是把目录手动拷贝过去,,感觉有点儿麻烦

buildroot_ncurses.png

#108 Re: RK3288/RK3399/RK1108 » WSL下编译buildroot,sysroot/usr/share/terminfo 下的目录名都是 ASCII 码,请问怎么解决? » 2022-05-09 14:45:43

我现在想到的一个可能有效的办法是,修改 buildroot\package\ncurses\ncurses.mk 下的如下部分:

NCURSES_TERMINFO_FILES = \
	a/ansi \
	d/dumb \
	l/linux \
	p/putty \
	p/putty-256color \
	p/putty-vt100 \
	s/screen \
	s/screen-256color \
	v/vt100 \
	v/vt100-putty \
	v/vt102 \
	v/vt200 \
	v/vt220 \
	x/xterm \
	x/xterm+256color \
	x/xterm-256color \
	x/xterm-color \
	x/xterm-xfree86 \
	$(call qstrip,$(BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO))

把其中的 a、d、l、p、s、v、x 等目录名改成其对应的 ASCII 码。。

但是我更想知道目录名是怎么变成 ASCII 码的,,在对应的位置修改,不让它变成 ASCII 码

#109 RK3288/RK3399/RK1108 » WSL下编译buildroot,sysroot/usr/share/terminfo 下的目录名都是 ASCII 码,请问怎么解决? » 2022-05-09 14:40:53

XIVN1987
回复: 4

编译报错:

/usr/bin/install -D -m 0644 /mnt/d/Program/Ubuntu/buildroot/output/host/aarch64-buildroot-linux-uclibc/sysroot/usr/share/terminfo/a/ansi /mnt/d/Program/Ubuntu/buildroot/output/target/usr/share/terminfo/a/ansi
/usr/bin/install: cannot stat '/mnt/d/Program/Ubuntu/buildroot/output/host/aarch64-buildroot-linux-uclibc/sysroot/usr/share/terminfo/a/ansi': No such file or directory

查看 sysroot/usr/share/terminfo 下内容如下:

root@wmxpc:~/win/buildroot# ls /mnt/d/Program/Ubuntu/buildroot/output/host/aarch64-buildroot-linux-uclibc/sysroot/usr/share/terminfo/
31  34  37  41  4d  51  62  65  68  6b  6e  71  74  77
32  35  38  45  4e  58  63  66  69  6c  6f  72  75  78
33  36  39  4c  50  61  64  67  6a  6d  70  73  76  7a

似乎是把目录名 a 变成了它的 ASCII 码 61,,

请问这是什么导致的??怎么解决?

#110 Re: RK3288/RK3399/RK1108 » Micsig的STO1004示波器使用了RK3568 » 2022-04-24 13:46:32

没有信号发生器功能,,比较遗憾,,
即使集成上比较简单的信号发生器,,也能省好些事情

#112 Re: Cortex M0/M3/M4/M7 » 有没有大神用过CH32V103/20x/30x系列的片子 » 2022-03-15 15:18:28

高速USB、千兆网、蓝牙BLE,,看起来很强大

#114 Re: RK3288/RK3399/RK1108 » host-fakeroot patch出错,哪位大神知道怎么解决,,谢谢 » 2022-02-17 21:07:02

大概搞清楚了,,

buildroot/package/fakeroot/0002-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch

buildroot.rockchip/patches.rockpis/fakeroot/0002.stat_ver.patch

中都有如下内容:

diff --git a/libfakeroot.c b/libfakeroot.c
index 3e80e38..14cdbc4 100644
--- a/libfakeroot.c
+++ b/libfakeroot.c
@@ -90,6 +90,16 @@
 #define SEND_GET_XATTR64(a,b,c) send_get_xattr64(a,b)
 #endif
 
+#ifndef _STAT_VER
+ #if defined (__aarch64__)
+  #define _STAT_VER 0
+ #elif defined (__x86_64__)
+  #define _STAT_VER 1
+ #else
+  #define _STAT_VER 3
+ #endif
+#endif
+

对同一位置完全相同的补丁,前一个打上,后一个肯定就打不上了,,删掉其中一个补丁就可以了

#115 RK3288/RK3399/RK1108 » host-fakeroot patch出错,哪位大神知道怎么解决,,谢谢 » 2022-02-17 12:15:30

XIVN1987
回复: 2

编译命令如下:

git clone https://github.com/buildroot/buildroot.git
git clone https://github.com/flatmax/buildroot.rockchip.git

cd buildroot
make BR2_EXTERNAL=../buildroot.rockchip rockpis_defconfig

make menuconfig
# Toolchain 下 GCC compiler Version 由 gcc 10.x 改为 gcc 9.x

make

报错信息如下:

fakeroot_1.25.3.orig.tar.gz: OK (sha256: 8e903683357f7f5bcc31b879fd743391ad47691d4be33d24a76be3b6c21e956c)
>>> host-fakeroot 1.25.3 Extracting
gzip -d -c /root/buildroot.dl/fakeroot/fakeroot_1.25.3.orig.tar.gz | tar --strip-components=1 -C /root/buildroot/output/build/host-fakeroot-1.25.3   -xf -
>>> host-fakeroot 1.25.3 Patching

Applying 0001-skip-doc-subdirs.patch using patch:
patching file doc/Makefile.am

Applying 0002-libfakeroot.c-define-_STAT_VER-if-not-already-define.patch using patch:
patching file libfakeroot.c

Applying 0003-libfakeroot.c-add-wrappers-for-new-glibc-2.33-symbol.patch using patch:
patching file libfakeroot.c

Applying 0004-configure.ac-fix-__xmknod-at-pointer-argument.patch using patch:
patching file configure.ac

Applying 0005-fix-build-regression-on-macOS.patch using patch:
patching file configure.ac
patching file libfakeroot.c

Applying 0002.stat_ver.patch using patch:
patching file libfakeroot.c
Reversed (or previously applied) patch detected!  Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file libfakeroot.c.rej
patching file libfakeroot.c
Hunk #1 succeeded at 1402 with fuzz 1 (offset 50 lines).
patching file libfakeroot.c
Hunk #1 succeeded at 2575 (offset 50 lines).
patching file configure.ac
Reversed (or previously applied) patch detected!  Skipping patch.
2 out of 2 hunks ignored -- saving rejects to file configure.ac.rej
patching file libfakeroot.c
Hunk #1 succeeded at 2116 (offset 50 lines).
Hunk #2 succeeded at 2135 (offset 50 lines).
patching file configure.ac
patching file libfakeroot.c
Hunk #4 succeeded at 2035 (offset 50 lines).
Hunk #5 succeeded at 2636 (offset 50 lines).
patching file wrapawk_macosx
patching file wrapfunc.inp
make: *** [package/pkg-generic.mk:227: /root/buildroot/output/build/host-fakeroot-1.25.3/.stamp_patched] Error 1

#116 Re: Cortex M0/M3/M4/M7 » 让 CMSIS-DAP DAPLink 功能和性能上升到新高度 » 2022-01-21 09:55:20

ifree64 说:

强帖,串口CDC在win10以上系统是不是不用装驱动?我在arm windows虚拟机里没有ch340的驱动,没有串口用,重金买回来的m1 macbook成了摆设。

CDC一直是免驱的,,可惜CH340不是CDC,,

淘宝上卖的USB转串口好像没有CDC的,,CDC只能自己拿单片机做

之所以出现这种情况,,我觉得主要是因为Windows上CDC都显示成“USB 串行设备”,,不能显示成“CH3410 ...”、“CP2102 ...”这样个性化的名字

CDC%20vs%20VCP.png

#117 Re: Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » Pyinstaller打包使用pyusb的python程序 » 2022-01-19 10:55:58

@小智

我主要是分析为什么打包后pyusb无法定位到libusb.dll,,知道了原因应对方法就很简单了,,修改spec文件或者使用--add-binary命令行参数都可以。。

#118 Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » Pyinstaller打包使用pyusb的python程序 » 2022-01-18 10:24:40

XIVN1987
回复: 2

用Python写了个使用pyusb库的模仿JLink Commander的应用:https://github.com/XIVN1987/DAPCmdr

为了方便同事使用,于是用“pyinstaller -F path/to/DAPCmdr.py”将其打包成单个exe可执行文件,,
可是打包后程序执行报错“No backend available”,,无法发现和连接DAPLink,,根据之前调试pyusb的经验,,这是pyusb库找不到libusb.dll导致的

可是源码形式下可以找到libusb.dll,,为啥打包后就不行了呢??经过搜索和阅读源码发现,,原来pyinstaller修改了pyusb搜索libusb.dll的方式。。

pyusb原本的libusb.dll搜索代码执行流程如下:

_load_library() # usb\backend\libusb1.py
    usb.libloader.load_locate_library('libusb-1.0')

load_locate_library(name) # usb\libloader.py
    ctypes.util.find_library(name + '.dll')

find_library(name) # ctypes\util.py
    for directory in os.environ['PATH'].split(os.pathsep):
        fname = os.path.join(directory, name)
        if os.path.isfile(fname):
            return fname

简单来说pyusb最终是通过ctypes.util.find_library搜索libusb.dll的,,而ctypes.util.find_library是在环境变量PATH包含的路径下搜索libusb.dll的,,
我为了不修改系统变量PATH依然能够执行DAPCmdr.py,所以在DAPCmdr.py的起始处添加了下面一行代码:

os.environ['PATH'] = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'libusb-1.0.24/MinGW64/dll') + os.pathsep + os.environ['PATH']

也就是把DAPCmdr.py所在目录下的 libusb-1.0.24/MinGW64/dll 目录路径加入环境变量 PATH,这样 ctypes.util.find_library 就能从 DAPCmdr.py 所在路径下搜索到 libusb.dll,而且不管 DAPCmdr 目录拷贝到哪里,DAPCmdr.py 都能正常启动执行。。

而 Pyinstaller 打包使用 pyusb 库的程序时,会用到 site-packages\\_pyinstaller_hooks_contrib\\hooks\\rthooks\\pyi_rth_usb.py 文件,其内容如下:

def get_load_func(type, candidates):
    def _load_library(find_library=None):
        exec_path = sys._MEIPASS

        l = None
        for candidate in candidates:
            # Do linker's path lookup work to force load bundled copy.
            if sys.platform == 'win32' or sys.platform == 'cygwin':
                libs = glob.glob("%s\\%s*.dll" % (exec_path, candidate))
            else:
                libs = glob.glob("%s/%s*.so*" % (exec_path, candidate))
            for libname in libs:
                try:
                    l = ctypes.WinDLL(libname)
                    if l is not None:
                        break
                except:
                    l = None
            if l is not None:
                break
        else:
            raise OSError('USB library could not be found')

        return l
    return _load_library


import usb.backend.libusb1 as libusb10
libusb10._load_library = get_load_func('libusb10', ('usb-1.0', 'libusb-1.0', 'usb'))

可以看到,它用自己编写的 _load_library 函数替代了usb.backend.libusb1 自身的 _load_library 函数,,而它自己编写的 _load_library 是在打包生成的 DAPCmdr.exe 文件所在的目录下查找 libusb.dll 的。。

所以我按照源码目录结构把 libusb-1.0.24 文件夹拷贝到 DAPCmdr.exe 所在目录,,DAPCmdr.exe 执行时是无法搜索到 libusb.dll 的。。只有将 libusb-1.0.24 文件夹下的 libusb-1.0.dll 文件拷贝到 DAPCmdr.exe 所在目录,,DAPCmdr.exe 执行时才能搜索到 libusb.dll

#119 Re: Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2022-01-14 09:24:51

llinjupt 说:

楼主功德无量,DAPLink 上面可以做的文章很多,由于它支持自由扩充命令,可以做出来很多好玩的东西,例如 ATMEL EDBG 就是基于DAPLink 的。

不敢、不敢,,功德都是ARM的,,我只是做了些许微不足道的工作而已 big_smile big_smile

#122 Cortex M0/M3/M4/M7 » DAPLink添加WINUSB支持。。 » 2022-01-12 20:55:19

XIVN1987
回复: 24

之前使用HID传输协议,下载速度比较慢,,所以升级添加了 WINUSB 协议支持,,

通过在Keil Option窗口C/C++页是否定义 DAP_FW_V1 宏,选择使用 HID 协议还是 WINUSB 协议。。

官方的 DAPLink 功能更多,,但代码也很多,,不易阅读,,我这个移植代码比较简洁,,容易读懂和移植,,感兴趣的可以看下

https://github.com/XIVN1987/DAPLink

#123 Re: Cortex M0/M3/M4/M7 » 一个GD32的CAN外设硬件bug » 2022-01-05 17:35:06

echo 说:
duqiang 说:

感谢楼主踩坑,为其他人铺路

GD32F103是2013年发布的,所以,这个bug存在快9年了。

9年了都没改,,那至少说明GD的大客户里没有这么用CAN的,,

#124 Re: Cortex M0/M3/M4/M7 » 一个GD32的CAN外设硬件bug » 2022-01-04 21:20:46

我觉得这不叫bug,,只不过是它缺少一个你需要的功能而已。。

人家设计的时候就没考虑过你这种用法,,
人家想的是,CAN硬件模块接收到一个数据包,通过过滤器确定是你想要处理的包,,就通过中断通知你接收处理下就完了。。

你想要的功能也很容易实现,,额外用一个引脚配置成边沿检测中断,,连接到CAN_RX引脚上,,当出现一个边沿后中断标志IF置位,,后面你只要检测到这个IF置位了就知道开始接收一个包了,,

#125 Re: Cortex M0/M3/M4/M7 » DAPLink添加软件复位功能。。 » 2021-12-27 10:22:08

@海石生风

1、刚刚去淘宝搜索“DAPLink”看了下,,大多数都带RESET引脚,,不带RESET引脚的是少数

2、我平时用的JLink、DAPLink都带RESET引脚,,但我从来都不接,,下载、调试都很正常,,可能和使用的芯片类型以及使用环境有关系吧。。

#126 Re: Cortex M0/M3/M4/M7 » DAPLink添加软件复位功能。。 » 2021-12-27 09:31:15

@llinjupt

对于这种情况,直接用硬件复位好了。。不管什么芯片,,硬件复位总不会有问题。。

SCB->AIRCR 不能正确复位那是他们芯片设计的问题,,没必要折腾DAPLink

#127 Re: Cortex M0/M3/M4/M7 » DAPLink添加软件复位功能。。 » 2021-12-26 12:17:59

llinjupt 说:

不知道楼主有没有测试过一些国产芯片,例如GD,APM,这种方式不起作用?

没测试,,

如果 SCB->AIRCR 不能复位它们,,那要怎样软件复位??写它们自己定义的外设寄存器吗?

#128 Re: Cortex M0/M3/M4/M7 » DAPLink添加软件复位功能。。 » 2021-12-25 19:52:38

海石生风 说:

应该优先使用nRST硬件复位,如果SWD引脚存在IO复用或芯片处于低功耗状态就响应不了软件复位。所以我的调试口都是带复位引脚的,没有nRST引脚的调试器我是不会用的。
LZ这算是把好东西给废了。

我这个是用于没有nRESET引脚的DAPLink的,,有nRESET引脚的DAPLink复位目标芯片很简单,,设置下nRESET电平就可以了。。

#129 Cortex M0/M3/M4/M7 » DAPLink添加软件复位功能。。 » 2021-12-25 18:54:24

XIVN1987
回复: 14

最近使用DAPLink,发现即使在Keil下载设置中勾选了“Reset and Run”,下载后仍然不能自动复位执行,,需要手动按一下复位按键程序才能执行,,感觉比较麻烦。。所以就打算给DAPLink添加软件复位功能。。

查看DAPLink源码发现其中有 ID_DAP_ResetTarget 命令,该命令最终调用函数 RESET_TARGET,感觉只要在该函数中实现通过 SWD 向目标芯片的 SCB->AIRCR 寄存器写入复位请求即可实现复位目标芯片的功能,,代码如下:

extern uint8_t swd_write_word(uint32_t addr, uint32_t val);
static uint32_t RESET_TARGET(void)
{
	swd_write_word((uint32_t)&SCB->AIRCR, ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | SCB_AIRCR_SYSRESETREQ_Msk));
	
    return 1;	// change to '1' when a device reset sequence is implemented
}

可是修改后发现,并不管用,,目标板并没有复位。。

通过Wireshark抓取Keil与DAPLink的通信过程发现,Keil并没有发送 ID_DAP_ResetTarget 命令,,而是通过 ID_DAP_SWJ_Pins 命令直接通过JTAG的nRESET引脚复位目标芯片。。可是我的DAPLink上没有nRESET引脚,,所以我在DAPLink响应 ID_DAP_SWJ_Pins 命令拉低 nRESET 引脚时执行 SCB->AIRCR 写入操作,,代码如下:

extern uint8_t swd_write_word(uint32_t addr, uint32_t val);
static __inline void PIN_nRESET_OUT(uint32_t bit)
{
	if(bit == 0)
	{
		swd_write_word((uint32_t)&SCB->AIRCR, ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | SCB_AIRCR_SYSRESETREQ_Msk));
	}
}

这样,,不需要接nRESET引脚,,SWD下载后也能自动复位执行了。。

代码工程已经更新到github上,,感兴趣的可以看下:https://github.com/XIVN1987/DAPLink

#130 Re: 全志 SOC » 开源个D1s核心板 » 2021-12-24 21:23:15

楼主,,你的线都好细啊,,比芯片焊盘细好多,,这样会不会影响电路性能啊??

#131 Re: 全志 SOC » 开源个D1s核心板 » 2021-12-24 21:20:55

lcfmax 说:

一看就是经常发律师函的那款软件了

哦,,懂了,,感谢指点。。

#132 Re: 全志 SOC » 开源个D1s核心板 » 2021-12-24 20:54:52

👍 画的很漂亮,,

楼主这是什么软件画的??

#133 Re: 全志 SOC » 《MangoPi-MQ 麻雀D1s上手教程》Tina系统编译烧录及基础分析 » 2021-12-21 22:30:10

丨晋丨 说:

@XIVN1987
这是你自己从官方 repo 下载的吧?看看是不是repo 出错了,没同步完成

我找到原因了,,是因为我在我的.bashrc文件中做了如下定义:

function cd() {
    builtin cd "$@" && ls
}

也就是cd到一个目录后,自动执行ls显示当前目录的内容。。
好吧,,算是偷懒的代价吧 sad

#134 Re: 全志 SOC » 《MangoPi-MQ 麻雀D1s上手教程》Tina系统编译烧录及基础分析 » 2021-12-20 20:42:17

丨晋丨 说:

@XIVN1987
这是你自己从官方 repo 下载的吧?看看是不是repo 出错了,没同步完成

是从官方下载的,,
同步成功了,,文件夹大小12GB

#135 Re: 全志 SOC » 《MangoPi-MQ 麻雀D1s上手教程》Tina系统编译烧录及基础分析 » 2021-12-20 14:54:33

感谢楼主的分享。。
我执行lunch,选择板子后报下面的错,,请问您知道什么原因吗?

vision_opencv
vmtouch
vnstat
vpnc
wayland
webkitgtk
weston
wget
wolfssl
wpan
wrt350nv2
xfsprogs
xkeyboard
xtables
xupnpd
xz
yaml
zeromq
zlib
zope.interface
zstd
** Do you have the right repo manifest?
-bash: cd: too many arguments

#136 Re: Cortex M0/M3/M4/M7 » 分享我画的M482简易开发板,板载DAPLink! » 2021-12-19 00:22:27

海石生风 说:

问下楼主,DAPLink的烧录速度如何?我试了nu-link + OpenOCD的烧录速度太慢了才4KB/S,对比ST-Link还真不习惯。

实测如下:文件大小 426KB,总共耗时 21s,其中打印2000012D是在执行擦除,打印2000038D是在执行写入,,擦除和写入分别耗时10s,因此写入速度大概是40KB/s。。
我这个DAPLink是用的HID传输协议,全速模式下HID速度最高也就64B*1000/1024=62.5KB/s,考虑到待烧写数据传输到DAPLink后还需要通过SWD接口发送到目标芯片、目标芯片Flash写入也需要耗时,,因此40KB/s估计就是全速USB HID方案的烧写速度极限了。。
要想再快就只能使用CMSIS-DAP v2的WINUSB传输协议了,,采用这个协议理论上能够做到和J-Link、ST-Link一样快。。
MCUProg%20DAPLink%20Speed.gif

另外,,关于擦除时间的问题,,感觉耗时比较长,,于是查了下
擦除1个页大概100ms,,426KB对应106个Flash页,,总共耗时100ms*106=10s,,和实测结果差不多
M480%20Flash%20Erase%20Time.png

上面用到的烧录软件,感兴趣可以下载试试:https://github.com/XIVN1987/MCUProg

#137 Cortex M0/M3/M4/M7 » 分享我画的M482简易开发板,板载DAPLink! » 2021-12-18 21:45:48

XIVN1987
回复: 3

虽然Linux要学,,可单片机也不能丢弃,,所以画了块简单的单片机小板。。 smile

焊了一块测试了下,,基本功能没问题。。主控和DAPLink都能工作。。

MicroPi-M482 Github: https://github.com/XIVN1987/MicroPi-M482
MicroPi-M482 OSHWHub: https://oshwhub.com/XIVN1987/M482SIDv2

板载DAPLink的固件:https://github.com/XIVN1987/DAPLink

我给M482移植的MicroPython:https://github.com/XIVN1987/micropython/tree/master/ports/m480

M482SIDv2.jpg

M482SIDv2.LCPcb.jpg

M482SIDv2.LCSch.png

#138 Re: Php/Nodejs/Web/HTML5/Javascript/微信开发/Python » 分享我用PyQt编写的简易串口助手。。 » 2021-12-15 09:51:13

sblpp 说:

感谢楼主分享
欢迎楼主从X坛转来这儿

两个论坛我都逛(21IC也偶尔看看 smile),,那里搞MCU的多,,这里搞Linux的多。。

MCU搞久了,,想学习学习Linux lol

#141 Re: 全志 SOC » 带WiFi的【开源D1s开发板】来了,Xassette-Asterisk升级完成 » 2021-12-13 12:32:28

@SdtElectronics
楼主,你电路里只给CC1接下拉,CC2悬空,,这样用双端Type-C接口的线连电脑或充电器可能会不供电。。
网上说双端Type-C的线里面只有一个CC是有导线连通的,,另一个CC是悬空的,,如果线里面悬空的CC连到你的CC1、连通的CC连到你的CC2,,就会导致主机检测不到你板子上CC1上的下拉电阻
Type-C%20CC.png

#142 Re: 全志 SOC » 兄弟们,MangoPi-麻雀MQ已成功量产 » 2021-12-11 13:38:30

板子很漂亮,,希望以后还出黑色的。。

#145 RK3288/RK3399/RK1108 » 编译 armbian,报错 chroot: failed to run command '/bin/bash': Exec format e » 2021-11-18 21:26:41

XIVN1987
回复: 1

编译命令是:

git clone https://github.com/armbian/build armbian
docker run --name c_armbian -v /root/armbian:/armbian -it ubuntu:21.04 bash
apt install git
cd /armbian
./compile.sh BOARD=rockpi-s BRANCH=current RELEASE=buster KERNEL_ONLY=no KERNEL_CONFIGURE=no BUILD_MINIMAL=no BUILD_DESKTOP=no

主机环境是 Ubuntu 18.04.4,报错内容是:

[ o.k. ] Installing base system [ Stage 2/2 ]
chroot: failed to run command '/bin/bash': Exec format error
[ error ] ERROR in function create_rootfs_cache [ debootstrap.sh:212 ]
[ error ] Debootstrap base system for current rockpi-s buster   no second stage failed
[ o.k. ] Process terminated
[ o.k. ] Unmounting [ /armbian/.tmp/rootfs-f321cf67-d4eb-4870-ad36-1313933e4c67/ ]
[ error ] ERROR in function unmount_on_exit [ image-helpers.sh:82 ]
[ error ] debootstrap-ng was interrupted
[ o.k. ] Process terminated

这个是什么问题?怎么解决??求教大佬指点,,谢谢。。

#146 Re: RK3288/RK3399/RK1108 » 编译 armbian,报错缺少 binfmt_misc » 2021-11-18 17:45:17

Fomalhaut 说:

docker用的还是原内核,解决不了内核模块问题。必须在本机加载这个模块才行。

感谢指点,确实如此,,

只要在本地主机安装了 binfmt_misc 内核模块,在 docker 容器中就能看到,,我一直以为需要在 docker 容器中执行 modprobe 安装模块,,原来是不需要的

root@HWCloud:~# modprobe binfmt_misc

root@HWCloud:~# docker container attach c_armbian

root@91565d9071de:/armbian# modprobe binfmt_misc
modprobe: FATAL: Module binfmt_misc not found in directory /lib/modules/4.15.0-91-generic

root@91565d9071de:/armbian# lsmod
Module                  Size  Used by
binfmt_misc            20480  1
veth                   16384  0
xt_conntrack           16384  1

#147 Re: RK3288/RK3399/RK1108 » 编译 armbian,报错缺少 binfmt_misc » 2021-11-17 22:26:05

unturned3 说:

试试 apt install binfmt-support

binfmt_misc 在 binfmt-support 中吗?

root@91565d9071de:/armbian# apt install binfmt-support
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
binfmt-support is already the newest version (2.2.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

root@91565d9071de:/armbian# modprobe binfmt_misc
modprobe: FATAL: Module binfmt_misc not found in directory /lib/modules/4.15.0-91-generic

#148 RK3288/RK3399/RK1108 » 编译 armbian,报错缺少 binfmt_misc » 2021-11-17 21:21:14

XIVN1987
回复: 4

我的编译命令如下:

git clone https://github.com/armbian/build armbian
docker run --name c_armbian -v /root/armbian:/armbian -it ubuntu:21.04 bash
apt install git
cd /armbian
./compile.sh BOARD=rockpi-s BRANCH=current RELEASE=buster KERNEL_ONLY=no KERNEL_CONFIGURE=no BUILD_MINIMAL=no BUILD_DESKTOP=no

官方的编译要求如下:
armbian-binfmt_misc.jpg

编译报错缺少 binfmt_misc,可是我使用的就是 docker hub 上 ubuntu 官方的镜像,,去哪里找有 binfmt_misc 内核模块的 ubuntu 21.04 docker image 啊?或者怎么安装 binfmt_misc?我试了”apt install binfmt_misc“报错找不到该软件。。

请求各位大佬指点,,谢谢

#149 Re: RISC-V » 【新玩具get】博流智能BL702(RISC-V+FPU+2.4G+USBD) » 2021-11-17 17:13:21

引脚这么少的芯片,,调试却用4线的JTAG,,不知道博流咋想的,,换成2线的cJTAG不香吗??

#150 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有没有便宜点的带usb 3.0的芯片? » 2021-11-12 10:15:02

又想了下,对于 5Gbps 的 USB 3.0 来说,CH569 上那个 RISC-V 跑 100MHz 还是 200MHz 其实没啥区别,反正都不可能靠它处理 USB 3.0 收发的数据,它只是一个配置 CPU 而已。。

数据搬运应该是靠 DMA 硬件自动完成的,不需要片上 CPU 参与,,

比如 CH569 通过 HSPI、SerDes 连接 FPGA 接收数据,,然后通过 USB 3.0、千兆网上传到电脑上,,全程不需要 CH569 上那个 CPU 参与。。

CH569.png

#151 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 有没有便宜点的带usb 3.0的芯片? » 2021-11-12 09:24:22

USB 3.0、千兆网、1.25Gbps SerDes,,CH569 这接口特性确实够牛逼,,
可是这么牛逼的外设却搭配的是120MHz CPU、96KB RAM,,有点儿“小牛拉大车”的感觉,,主频和RAM容量都至少翻倍才够诚意。。

#152 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 坐标深圳,招两个MCU软件工程师 » 2021-11-09 09:35:53

@Blueskull

所以我认为,以后MCU相关的工作都会逃离北上深,,跑去长沙、成都、武汉、郑州这样的二三线城市,,
毕竟工资差不了几千块,,房价却差了四五倍,,完全看不到希望

#154 Re: RISC-V » 国产riscv芯片汇总 » 2021-10-26 14:17:31

kekemuyu 说:

@XIVN1987
不管是8系列还是9系列都是c-sky指令集,可能版本不同分别对应v2和v3。c-sky基于riscv构建,兼容riscv。这是官方的技术特征里写明的,除非文档有误。

下面是从平头哥官网下载的“玄铁E804”手册,兼容不兼容看手册最靠谱。。

玄铁E804用户手册_v04.pdf

#155 Re: RISC-V » 国产riscv芯片汇总 » 2021-10-26 10:53:39

kekemuyu 说:
XIVN1987 说:

w806是c-sky,不是risc-v

兼容

网上查了下,W806的内核是XT804

平头哥的处理器中叫804的只有“玄铁E804”,,猜测W806的内核就是这个

玄铁E804手册截图如下:
%E7%8E%84%E9%93%81E804.png

RISC-V的R0是固定的0寄存器,,E804这个显然就是普通的通用寄存器,,连内核寄存器定义都不一样,怎么会兼容呢!

平头哥的处理器有两个系列:
C-SKY内核的8系列
RISC-V内核的9系列

这两个是完全不一样的,,C-SKY在RISC-V出现之前就存在很多年了

#157 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-09-21 18:48:39

@stgan

下面这个配置项我没改,从截图看默认确实没有密码

楼上 @黄粱梦 说“ssh登录一定要密码,或者用密钥登录”,,那么你有三种解决方法:
1、用串口登录,然后设置root用户密码
2、用串口登录,然后把公钥配置进去,之后免密登录
3、修改下面这个配置项,然后重新编译生成新的固件

buildroot-password.jpg

#158 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-09-21 09:01:00

stgan 说:

buildroot.rockchip rockpis_defconfig 编译出来的sdcard.img的ssh默认用户名密码是什么?多谢。

我还没用ssh,,我用串口登录的,,用户名为root,,不需要密码

#159 RK3288/RK3399/RK1108 » WSL下使用串口助手 » 2021-09-20 19:03:12

XIVN1987
回复: 1

这样串口助手和SSH客户端都能用WSL bash实现了,不在再装putty之类的软件了

function ser {
    if   [ $# -eq 0 ]; then
        return
    elif [ $# -eq 1 ]; then
        port=/dev/ttyS$1
        baudrate=115200
    elif [ $# -eq 2 ]; then
        port=/dev/ttyS$1
        baudrate=$2
    fi

    echo "port: $port, baudrate: $baudrate"

    sudo chmod 666 $port
    sudo stty -F $port $baudrate
    sudo picocom -b $baudrate $port
}

WSL-serial.png

#160 Re: RISC-V » 自制博流bl702精致小板 » 2021-09-17 13:16:03

精致,艺术品级,,顶一下

#161 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 怎么就管不住这买板子的手 » 2021-09-17 13:13:41

是啊,,买回来放几个月,,然后半价闲鱼出掉,,就这么折腾估计都赔了好几千块了 (┬_┬)

#162 Re: ESP32/ESP8266 » 除了ESP32/ESP8266还有其它厂家用Xtensa的核心吗? » 2021-09-17 13:10:37

@echo

兆易好猛,,NOR Flash、NAND Flash、DDR4 DRAM、MCU、WiFi SOC,,据说还要出800MHz的Cortex-M7

#163 Re: ESP32/ESP8266 » 除了ESP32/ESP8266还有其它厂家用Xtensa的核心吗? » 2021-09-16 13:33:07

Blueskull 说:

XTENSA一般都是深嵌入式应用,也就是自带固件的协处理器,普通人接触不到这部分的固件。很有可能你的Linux系统加载的某个设备驱动程序里面带的固件就是跑在下位机芯片的XTENSA核心上面,而你不知道而以。

这论坛上的不算普通人吧,,都是相关行业从业者,,一年40亿这么大的出货量,,不可能就知道个ESP32吧 big_smile

#164 Re: ESP32/ESP8266 » 除了ESP32/ESP8266还有其它厂家用Xtensa的核心吗? » 2021-09-16 12:07:36

@kekemuyu

Shipping at a rate of over 4 billion cores per year

一年40亿颗,,相当猛啊

我查了下网上说ARM 3年600亿颗,,平均一年200亿颗,,xtensa 达到 ARM 的五分一了

不过感觉上到处都是ARM,,ARM都快占领全世界了,,而 xtensa 至今只知道一个ESP32,,与数字显著不符啊

#165 Re: ESP32/ESP8266 » 除了ESP32/ESP8266还有其它厂家用Xtensa的核心吗? » 2021-09-16 11:55:02

echo 说:

其实SDK已经把底层都给封装好了,底层什么核心并不重要。
RISC-V只出了ESP32-C3一款而已。

又出了个 ESP32-H2,BLE + Zigbee
https://www.espressif.com/zh-hans/news/ESP32_H2?position=6&list=2Jmgp20Ks2hwxwuzBiWoW-cyTclWAsDkriUiwY4moV4

#166 Re: RK3288/RK3399/RK1108 » dw-apb-uart ff0a0000.serial: set rate:3686400, but get rate:3428572 » 2021-09-02 22:32:53

问题解决了,,解决方法:
将 drivers/tty/serial/8250/8250_dw.c 中函数 dw8250_set_termios() 里面的

#ifdef CONFIG_ARCH_ROCKCHIP
	if ((baud * 16) <= 4000000) {
		/*
		 * Make sure uart sclk is high enough
		 */
		div = 4000000 / baud / 16;
		rate = baud * 16 * div;
	} else {
		rate = baud * 16;
	}

	ret = clk_set_rate(d->clk, rate);
	rate_temp = clk_get_rate(d->clk);
	diff = rate * 20 / 1000;
	/*
	 * If rate_temp is not equal to rate, is means fractional frequency
	 * division is failed. Then use Integer frequency division, and
	 * the buad rate error must be under -+2%
	 */
	if ((rate_temp < rate) && ((rate - rate_temp) > diff)) {
		ret = clk_set_rate(d->clk, rate + diff);
		rate_temp = clk_get_rate(d->clk);
		if ((rate_temp < rate) && ((rate - rate_temp) > diff))
			dev_info(p->dev, "set rate:%d, but get rate:%d\n",
				 rate, rate_temp);
		else if ((rate < rate_temp) && ((rate_temp - rate) > diff))
			dev_info(p->dev, "set rate:%d, but get rate:%d\n",
				 rate, rate_temp);
	}
#else

替换为:

#ifdef CONFIG_ARCH_ROCKCHIP
	rate = clk_get_rate(clk_get_parent(d->clk));
	ret = clk_set_rate(d->clk, rate);
#else

#169 Re: ESP32/ESP8266 » ESP8266的外设真的很拉垮 » 2021-09-01 15:53:25

SOC是这样,,外设比较少

想要外设多的话,,还得是MCU,,MCU各种外设都很全

#170 RK3288/RK3399/RK1108 » __PHYS_OFFSET == KIMAGE_VADDR ? » 2021-08-17 11:04:44

XIVN1987
回复: 0
// arch/arm64/kernel/head.S
#define __PHYS_OFFSET   (KERNEL_START - TEXT_OFFSET)

// arch/arm64/include/asm/memory.h
#define KERNEL_START      _text

// arch/arm64/kernel/vmlinux.lds.S
    . = KIMAGE_VADDR + TEXT_OFFSET;

    .head.text : {
        _text = .;
        HEAD_TEXT
    }

因此:
__PHYS_OFFSET = (KERNEL_START - TEXT_OFFSET)
              = (_text - TEXT_OFFSET)
              = (KIMAGE_VADDR + TEXT_OFFSET - TEXT_OFFSET)
              = KIMAGE_VADDR

这两个符号一个叫“物理偏移”,一个叫“虚拟地址”,,最终却是同一个取值??

#171 Re: RK3288/RK3399/RK1108 » Devicetree Spec 上的 Specifier Mapping Example 什么意思?看迷糊了,哪位大神给讲讲。。 » 2021-08-14 07:45:01

又读了几遍,,感觉意思是:
expansion_device 的 reset 使用的 GPIO 是“<&soc_gpio1 3 GPIO_ACTIVE_LOW>”,推导如下:
1、查表前先执行 mask,<2 GPIO_ACTIVE_LOW> & <0xf 0x0> 得 <0x2 0>
2、使用<0x2 0>查表,查得 specifier parent 为 &soc_gpio1,parent specifier 为 <3 0>
3、pass-thru 为 <0x0 0x1>,因此 <2 GPIO_ACTIVE_LOW> 的第二个 cell 的最低位需要无修改地从 child node 传递给 parent node,即 parent node 的第二个 cell变为 GPIO_ACTIVE_LOW

#173 Re: 全志 SOC » 也学习前辈们,画了个全志F1C100 or 全志F1C200S的mini pi! » 2021-08-09 23:12:55

catterwang 说:

小白问个问题,Json格式的原理图用什么打开啊?

LCEDA画的

#174 RK3288/RK3399/RK1108 » dw-apb-uart ff0a0000.serial: set rate:3686400, but get rate:3428572 » 2021-08-07 19:57:55

XIVN1987
回复: 1

linux console设置波特率115200,逻辑分析仪实测为107142,,开机打印信息如下:

[    0.199149] Serial: 8250/16550 driver, 5 ports, IRQ sharing disabled
[    0.201430] console [ttyS0] disabled
[    0.201514] ff0a0000.serial: ttyS0 at MMIO 0xff0a0000 (irq = 10, base_baud = 1500000) is a 16550A
[    0.201693] clk_uart0_frac parent_rate(24000000) is low than rate(3686400)*20, fractional div is not allowed
[    0.201789] clk_uart0_frac parent_rate(24000000) is low than rate(3760128)*20, fractional div is not allowed
[    0.201811] dw-apb-uart ff0a0000.serial: set rate:3686400, but get rate:3428572
[    1.240605] console [ttyS0] enabled

是不是因为UART0时钟除以115200波特率商不是整数导致的?如果换个其他波特率的话,应该能得到准确波特率

不过如果希望继续用115200的话,,请问应该怎么设置?

#176 RK3288/RK3399/RK1108 » 看到一个相当紧凑的SOM! » 2021-08-05 10:17:58

XIVN1987
回复: 4

如下图所示,,这应该是极致紧凑了吧!

瑞芯微的芯片都是BGA封装的,,画板难度比较大,,要是能出些类似这种的SOM,,使用难度会大幅降低。。

SOM-STM32MP157.jpg

https://www.cnx-software.com/2020/06/26/linux-powered-stmicro-stm32mp1-solder-down-qfn-style-som-measures-27x27mm/

#177 Re: 全志 SOC » 有人关注MicroChi的SAMA5D2系列吗?内嵌DDR2,128Mbit ~1Gbit 都有。参考设计以及驱动等资料非常完善 » 2021-08-05 10:03:41

我上贴说错了,,不是ATSAMA5D27C-D1G叠封DDR没优势,,而是ATSAMA5D27-SOM1没把优势发挥出来

下面这个SOM就充分发挥了ATSAMA5D27C-D1G叠封DDR的优势
ATSAMA5D27C-D1G-1.png

看起来SOM长宽只比芯片大了20%,,相当紧凑

ATSAMA5D27C-D1G-2.png

ATSAMA5D27C-D1G-3.png

https://www.cnx-software.com/2021/06/14/hanesom-is-a-4-cm2-arm-linux-module-powered-by-microchip-sama5d2-sip/

#178 Re: 全志 SOC » 有人关注MicroChi的SAMA5D2系列吗?内嵌DDR2,128Mbit ~1Gbit 都有。参考设计以及驱动等资料非常完善 » 2021-08-05 09:51:11

达克罗德 说:

https://whycan.cn/files/members/729/20180725_085750.jpeg
这么快就收到som,不到5天,赞。包装很专业,很仔细,也赞一个

既然DDR已经叠封在芯片里面了,,芯片的封装为什么还是BGA??完全没体现出叠封DDR的优势啊!

#181 Re: 全志 SOC » [转载 aw-ol.com] 【极简操作】使用builroot 2021一键编译生成D1 nezha 系统镜像! » 2021-08-03 17:12:52

哇酷小二 说:

从打印信息看,启动流程是“ROM => OpenSBI => Kernel”,,没有执行U-Boot?

#182 Re: 君正Ingenic/X1000/X2000/T10/T20/T30 » 君正T40简要规格书 » 2021-08-03 16:37:10

%E5%90%9B%E6%AD%A3T40.png
1、XBurst2内核,顺序执行、双发射,,类似于Cortex-A53,,性能一般
2、SIMD512是512位SIMD吗?如果是的话,,那很强,,Cortex-A系列好像都是128位的,,Intel桌面处理器也才刚刚支持AVX512指令
3、这个8T AI算力是INT8的还是INT2的??如果是INT8那很强,,还是第一次看到INT2和INT4,,话说只有4个可取值的INT2真的有实际用处吗?

#184 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-03 16:20:10

编译成功:
buildroot-done.png

吐槽一下,,编译过程中会自动从github下载rkbin、rkdevice、rktool等几个包,,下载速度极慢,,平均只有10KB,,而包又比较大,,非常容易失败,,所以只能将github仓库导入gitee,,然后修改包的mk文件,,将其中的仓库地址都改成gitee上的

#185 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-03 16:14:45

问题3:commit miss
buildroot-commit-miss.jpg
描述说rkbin的仓库中没有“b1bb741794d6af002182d365879c645a239f5118”这个commit

查了下确实没有这个commit,,可以在提交历史记录中找一个相近的commit,,替换掉buildroot.rockchip/package/rkbin/rkbin.mk中的commit id
buildroot-rkbin_mk.png

#186 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-03 12:47:50

搜了下,,这些严格的语法检查似乎都是gcc 10引入的,,换个低版本的gcc重新编译就可以了

buildroot-gcc-version.jpg

#187 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-02 23:02:59

悲剧,,后面好多overlaps问题!!
restrict-overlaps-many.png

一个一个都改了肯定不现实,,看来只能想办法让编译器不做这么严格的语法检查才能编译通过

哪位大侠知道buildroot环境下怎么让编译器检查不这么严格,请求指点,,谢谢

#188 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-02 22:45:16

问题2:restrict-overlaps
restrict-overlaps.png

sprintf的第三个参数和第一个参数都是buf,,编译期认为发生了overlap,,代码如下:
restrict-overlaps-2.png

换种写法:
restrict-overlaps-3.png

这种写法和原来的写法应该是等效的,,先这么编译试试吧

#189 Re: RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-02 22:15:20

问题1:builtin-declaration-mismatch
builtin-declaration-mismatch.png
看描述意思是不能定义名字叫free的函数,因为库函数里有free()函数

查了下该函数定义是个static函数,只在这个文件内使用,,所以直接把函数名字改了
builtin-declaration-mismatch-2.png

#190 RK3288/RK3399/RK1108 » buildroot-rk3308编译过程记录 » 2021-08-02 22:03:03

XIVN1987
回复: 14

编译命令:

git clone https://github.com/buildroot/buildroot.git
git clone https://github.com/flatmax/buildroot.rockchip.git

cd buildroot
make BR2_EXTERNAL=../buildroot.rockchip rockpis_defconfig
make

#193 Re: ESP32/ESP8266 » ESP32-C3片子好像出来了 » 2021-04-09 17:33:53

好便宜的模块,,这应该是亏本推广吧

#194 Re: Cortex M0/M3/M4/M7 » RK2108 » 2021-03-14 11:17:13

400MHz的Cortex-M4,,牛叉轰轰啊。。

#195 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » OpenWrt vs Buildroot » 2021-02-20 20:11:34

abutter 说:

一点看法,仅供参考:buildroot 本质是工具链 + rootfs 构建 + app build,但本身不提供复杂的启动及配置机制;openwrt 在 buildroot 基础上提供了系统升级、版本升级、系统管理及配置机制等等。
如果你需要复杂的软件系统,glibc 及更全面的库支持,buildroot 更合适;如果你需要小巧的嵌入式版本,带升级功能和管理机制,那么 openwrt 更合适。

感觉大佬说的很有道理,,感谢指点

#196 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » OpenWrt vs Buildroot » 2021-02-20 15:14:25

codetez 说:

看这里。。。

  通过 v3s openwrt 上网发个帖
http://whycan.com/t_5379.html
(出处:哇酷开发者社区)

看来我搜的不够仔细,,
感谢指点

#197 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » OpenWrt vs Buildroot » 2021-02-19 15:35:09

拍打323 说:

什么源码去芯片供应商下?比如v3s移植openwrt ,''make menuconfig 选择芯片型号、开发板型号、需要的功能和软件''openwrt源码自带的吗?

有人移植就有,,没人移植就没有

比如NUC980的buildroot在芯片官方github上有 https://github.com/OpenNuvoton/NUC970_Buildroot

又如开发板RockPi S有人移植openwrt:https://github.com/jayanta525/rk3308-rock-pi-s

v3s的openwrt移植我搜了下,,确实没找到,,估计没有大神感兴趣吧

#198 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » OpenWrt vs Buildroot » 2021-02-19 15:05:44

达克罗德 说:

buildroot 偏向于给你提供定制rootfs的选项,怎么选由用户来定。而且buildroot是选好了之后对源码进行交叉编译;而openwrt我的理解类似于Debian,官方给你选好了很多软件包和服务,组成了一个有特色的操作系统。当然由于带了包管理,你还是可以事后安装你想要的软件包。不像buildroot是自己编源码,在openwrt这些软件包事先都是已经编译好的,放到了源服务器上。

我感觉使用上差不多,主要都是三步:
1、git clone 下载源码
2、make xxx_defconfig(OpenWrt不需要此步)、make menuconfig 选择芯片型号、开发板型号、需要的功能和软件
3、make 编译生成linux镜像文件,,执行这一步的时候都会先根据选择的芯片编译生成交叉编译器,,然后再用交叉编译器编译系统镜像

感觉真的很相似,,

要说差异的话,似乎OpenWrt的官方源码https://github.com/openwrt/openwrt中支持的芯片型号几乎都是路由器芯片,,非路由器芯片很少

不过这似乎也不是啥大问题,,因为我们下载源码的时候一般都是去芯片/开发板供应商那里去下载,,而不是去openwrt或buildroot的github去下载

#199 Openwrt/LEDE/AR9331/MT7688/RT5350 » OpenWrt vs Buildroot » 2021-02-19 12:44:55

XIVN1987
回复: 14

一直认为Buildroot是用来构建嵌入式Linux系统的,OpenWrt是一个路由器系统,,二者用途明确,应该没什么交集

最近看了下二者官方的描述,,内容如下:

Buildroot
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation.

OpenWrt
The OpenWrt Project is a Linux operating system targeting embedded devices.

Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developers, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.

从官方的描述来看,OpenWrt官方对自己的描述中并没有提到路由器,,而是说自己是一个“Linux targeting embedded devices”,,这样看起来的话似乎跟Buildroot是非常类似的东西,,都是用来构建嵌入式设备上的Linux系统的

除了第一句说明自己的用途,,后面大段的内容都是在说自己的一个优势:即提供了一个包管理,,因此不用在构建Linux系统时选中所有包和应用,,而是可以分别构建系统和包,,在后面通过安装额外的包扩展系统的功能

这么看来,,似乎OpenWrt确实比Buildroot更有优势
那是不是用OpenWrt构建嵌入式Linux系统比Buildroot更好呢??

OpenWrt构建相对Buildroot有什么缺点呢??
比如是不是给芯片移植OpenWrt比移植Buildroot更困难?

页脚

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

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