您尚未登录。

#1 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » AI冲击下嵌入式攻城狮还剩多少技术护城河 » 2026-04-01 21:04:06

iki1120 说:

AI没办法焊线调板子,得给它专门配个助手;
等AI拿到具身智能,可以随意接线去抓示波器波形来分析问题的时候,我再躺平吧。不过能做到这个程度,世界上的工作也取代的差不多了😂😂

AI写代码,然后你焊线调板子,你给AI打工 😂

#2 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » AI冲击下嵌入式攻城狮还剩多少技术护城河 » 2026-04-01 18:31:38

memory 说:

自从用了 cursor 之类的AI软件,基本不些写代码了,有bug也不看代码,直接把bug描述出来,让AI继续改。

要是勤快一点,一天烧个100刀随随便便。

https://whycan.com/files/members/7106/ScreenShot_2026-03-31_211058_600.png

一天100刀,那岂不是等于给AI打工了?!

#3 Re: RISC-V » 现在最便宜的USBHS单片机是哪个 » 2026-03-24 11:04:43

速率要求是多少?WinUSB设备也是免驱的,USB FS下使用批量传输时速率大概9.6Mbps;比HID大概的传输速率400kbps高不少了。

#4 Re: Cortex M0/M3/M4/M7 » 有没有款MCU带几路高速ADC还有高速USB的 » 2026-02-09 20:36:36

沁恒那边有:
CH32X315:417MHz CPU、4组12位AD转换器5Msps采样率、480Mbps高速USB 2.0控制器带PHY、5Gbps超高速USB 3.0控制器带PHY
CH32H417:双核异构400MHz+150MHz、2组12位AD转换器5Msps采样率、1组10位高速AD转换器20Msps采样率、480Mbps高速USB 2.0控制器带PHY、5Gbps超高速USB 3.0控制器带PHY

才发现这是旧贴,笑!

#5 Re: 全志 SOC » 屏幕内容显示超出范围,请各位大佬指点一下。 » 2026-01-25 11:07:18

哪里超出显示范围?有些终端输出是不会自动换行的

#6 Re: 全志 SOC » 我来玩玩热敏打印机,先实现AI打印机,再顺带赋能作业帮APP » 2026-01-20 12:33:47

加热时长为2mm即500Hz,那么如果用25kHz的PWM信号来控制加热的话,PWM的占空比就代表打印的灰度,这样的效果应该能做得更好。

#7 Re: 全志 SOC » T113的sdk开启iconv的问题 » 2026-01-15 10:47:34

libiconv将多种编码合一个so文件里面,所以文件比较大。glibc的gconv的编码文件是各自分开的,想要什么编码就添加什么文件,无需重新编译源码方便剪裁。比如GBK.so大小才100多KB

100-strip_charsets.patch 那个补丁应该就是嫌无用编码太多进行裁剪的,刚好将GBK给裁了。

#8 Re: 全志 SOC » T113的sdk开启iconv的问题 » 2026-01-14 18:21:26

确保根文件系统有这个文件:/usr/lib/gconv/GBK.so
没有的话就从SDK里复制过去试下
/usr/lib/gconv/ 文件夹里存的就是各种编码的码表

#9 Re: 工业芯 匠芯创 » D12X 的Luban-lite在VS code下默认是RT-Thread怎么切换到RTOS呢? » 2025-12-26 18:18:20

rt device都是基于hal实现的,什么叫不完整?是有些驱动要在RTOS里才好实现。

你用STM32这类单片机搞UI,那些UI资源大小都是数MB大小,如果指望UI有个小改动就去烧录芯片,用SWD去烧录一样不好整。

#10 Re: 工业芯 匠芯创 » D12X 的Luban-lite在VS code下默认是RT-Thread怎么切换到RTOS呢? » 2025-12-25 13:33:27

Luban-lite的驱动层级从低到高依次是:hal->drv->rt device,drv驱动是调用hal实现rt device。
不喜欢RTOS可以直接使用低层驱动hal,也可以混合使用rt device和hal,一些复杂的驱动还是用rt device方便些。

D13x、D12x这类芯片主要用于HMI场景,即主要用来跑UI。UI开发调试最便捷方式的是开发时在PC模拟环境调试,调试得差不多了再烧录到板子。

#11 Re: 工业芯 匠芯创 » 仿真器能看到寄存器数值,但是就不能在线时候停止在断点处为啥? » 2025-12-18 16:32:24

如果确认是编译器优化的缘故,就要修改编译优化选项改为 -O0  并添加调试选项 -g

#12 Re: 工业芯 匠芯创 » 关于衡山派D133EBS开发板背光电路的疑问 » 2025-12-18 11:37:10

stlinux 说:
wait 说:

pwm好像可以限制的吧

是的,确实是通过软件来限制的。

PWM只是限制了平均电流,如果在PWM的正周期下的电流超过了LCD背光的最大电流,依然有烧坏风险。
所以依然要调电路器件参数,使其最大电流为LCD背光的额定电流。

#13 Re: 工业芯 匠芯创 » 仿真器能看到寄存器数值,但是就不能在线时候停止在断点处为啥? » 2025-12-17 17:41:20

可能是断点处的代码被编译器优化了。另外纠正一下,这叫调试,不叫仿真;那些什么什么Link的是调试器,不是仿真器。

#14 Re: 工业芯 匠芯创 » 关于衡山派D133EBS开发板背光电路的疑问 » 2025-12-17 17:33:24

看清楚下方小字第1点,根据实际更换R42、R43的阻值。只是0402封装,要求要有一点点熟练度哈

#15 Re: 工业芯 匠芯创 » windows usb 驱动 demo » 2025-12-14 13:03:44

将非标准USB设备做成WinUSB设备就好了,可以用系统自带的驱动,干嘛非得自己写驱动。

#16 Re: RK3288/RK3399/RK1108 » 这个RK3506G的开发板40块钱值吗? » 2025-12-12 12:22:21

技术发展得太快了,我以前刚出来工作那会ARM9开发板价格动不动都要七八百。现在50块钱不到的板子还要问值不值!?

#17 Re: RK3288/RK3399/RK1108 » RK3588(或其它SoC)的MIPI-DPHY控制器可以合并使用吗? » 2025-11-28 12:01:13

正常来说不同控制间是相互独立的,相互占用不同的内存地址空间。你这种情况可以等效为接入几个独立的CSI传感器,即4组数据线和时钟线一对一相连即可。
至于V4L驱动,我认为无需修改驱动,就让系统认为是接入了4个摄像头,只要在应用上将4个摄像头抓取的4张图片合成一张图片即可。

#18 Re: 君正Ingenic/X1000/X2000/T10/T20/T30 » 串口 UART 也支持 CAN 总线的仲裁 -- CDBUS » 2025-11-08 09:52:17

传输速率超过10Mbps的场景多么?RS485收发器在这么高的速率下传输距离比较近吧

#19 Re: RK3288/RK3399/RK1108 » 踩坑之rk3506 can波特率不准 » 2025-11-03 12:34:31

实际来说Linux即使打了实时补丁依然不能算作实时系统,而是通用系统,它设计之初注重的是吞吐量处理。
个人觉得,你测0数据长度帧率并不能体现它的吞吐量处理能力,而是实时控制的时延指标;应该测64字节长度的数据帧率才是迎合它的设计初衷。

#20 工业芯 匠芯创 » Linux SDK下从USB摄像头获取图像出现VIDIOC_DQBUF错误 » 2025-10-27 19:26:58

海石生风
回复: 0

USB摄像头在PC Linux上获取640x480、320x240分辨率YUV格式的图像都是OK的,但D211 Linux上获取320x240分辨率的OK、640x480的失败。
失败时应用输出的错误信息为:VIDIOC_DQBUF: Resource temporarily unavailable

这是什么原因?

#21 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 年近四十的新人,如何快速学会电路设计和制作? » 2025-10-25 11:12:05

maozheng110 说:

马上硬件设计也快被AI替代了,别学了

不懂电子的小白,何时靠AI就能做出合格的电路板?

#22 Re: 工业芯 匠芯创 » 我想问一下那个个D211用linux系统真的可以3秒内进系统运行APP吗? » 2025-10-22 12:41:19

我的板子用的SPI NAND Flash,确实是3秒左右进系统;我的UI是用AWTK写的,动态链接,且APP启动时加载了1.7MB的字体文件。从上电启动到显示第一个UI界面耗时5秒左右。

如果UI用LVGL且不加载大字体文件,APP本身启动耗时应该在1秒内。

#23 Re: 全志 SOC » 【开源】无线J-Link(V831+XR829+AXP2101+STM32F072C8) » 2025-10-18 16:56:26

WCH-LinkW是用CH32系列无线MCU实现的无线调试器,单个使用时支持有线调试,两个配对后支持无线调试。

网上有卖,单个20、两个38,性价比高。

#24 Re: 全志 SOC » 淘到的二手苹果 MAC AIR 安装 Windows » 2025-09-27 10:40:37

13年的机器还能干啥?我也有台13年的笔电,看网络视频弹个弹幕都吃力。

#26 Re: 工业芯 匠芯创 » D213的luban-lite可以用来做投屏吗? » 2025-09-26 10:43:37

规格书描述:
VE 视频编解码:
◦ H.264/ AVC 解码器,最高性能 1080P@30fps
◦ MJPEG 基线解码器,最高性能 1080P@60fps
◦ PNG 解码器,最高性能 1080P@15fps
◦ JPEG 编码器,最高性能 1080P@60fps

#27 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 嵌入式工程师的职业瓶颈 » 2025-09-25 17:03:33

往另一方面想,待遇越高被裁的概率也越高;升到一定程度后,工作压力也会跟待遇成正比(无论是否是通过副业来提高)。待遇主要在于选择。

#28 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 嵌入式工程师的职业瓶颈 » 2025-09-24 17:54:18

本人搞电子从业十多年,从未感觉到瓶颈。可能是你的工作环境让你在不断做重复劳动,可以试下换个环境。转行的话等于放弃当前7~8年的行业积累,要考虑清楚。
电子行业每三五年跳槽一次是正常的,我以前平均三年跳一次槽。在一个岗位呆上一定时长后如果觉得比较不顺心或不顺眼了,就要考虑跳槽。不要死吊一颗树而放弃整片森林。

个人技术的发展无非两个方向:深度和广度。要么根据自己的兴趣专精一个方向,要么涉猎当前技术相关的更多的上下游。无论哪个方向的发展都要求不能因循守旧,要拥抱新技术、新工具。电子行业的技术更迭很慢的。

#29 Re: 工业芯 匠芯创 » 匠心创原厂看过来:请问有没有BROM的接口资料? » 2025-09-11 19:49:15

灵活变通吧,比如先将uboot烧录好,后面想怎么折腾都可以

#30 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » github是不是DNS污染又严重了 » 2025-09-10 16:58:24

github的限制应该不只限于DNS污染,我用了加密DNS依然会不时完全访问不了。不过也有可能是加密DNS服务器链路本身被限制。

#31 Re: 全志 SOC » 求问快速冷启动拍照的方案 » 2025-09-01 19:55:38

rtos启动速度200ms应该是非XIP启动的耗时,不过这个XIP启动我也没有深究。
D13x的SDK是全公开的,在这里: https://gitee.com/artinchip/luban-lite

#32 Re: 全志 SOC » 求问快速冷启动拍照的方案 » 2025-08-30 20:51:36

iamseer 说:

@海石生风
他家codec分辨率不够,可惜了。

720P@60fps,降低帧率就可以支持1080P了;最大支持 8192x8192,当然此时帧率低很多。
另外,似乎D12x没有摄像头接口,只能上D13x

#33 Re: 全志 SOC » 求问快速冷启动拍照的方案 » 2025-08-30 11:10:53

iamseer 说:

@海石生风
感谢感谢,只是要求分辨率200万像素还要JPG压缩,同时有几十上百兆内存做缓存的话,似乎一般的MCU都资源不够,只能上MPU?

MPU最好选支持XIP启动的。
匠芯创的D13x、D12x是类似MPU的MCU,480MHz、支持XIP启动、集成DDR内存、带图像处理器;

#34 Re: 全志 SOC » 求问快速冷启动拍照的方案 » 2025-08-29 13:24:57

我觉得普通MCU + DVP摄像头方案应该更快,简单的MCU启动只需几个毫秒;如果DVP摄像头第一帧的成像质量比较高,那么这个冷启动耗时只取决于DVP摄像头的初始化时长,这个时长应该不长。

或者支持nor flash XIP启动的MPU跑RTOS/裸机也可以。好处是MPU支持的摄像头更多且图像分辨率更高。

#35 Re: Nuvoton N32905/N32926/NUC972/N9H20/N9H26/N9H30 » 关于socketcan通信 » 2025-08-28 12:13:41

操作系统的IO操作都是有缓存的,缓存在系统内核里。如果想要IO操作即时生效,就要调用flush接口;或者在open的时候添加flag指明不使用缓存。

#36 Re: 全志 SOC » 求助 T113S3 LCD显示有水纹 » 2025-08-26 08:47:54

xing 说:
海石生风 说:

背光是用PWM调控亮度的吧?是PWM的频率太低了。如果将亮度设成100%就不再闪烁,那就是这个问题。

不是PWM, 原理图上 直接一颗电阻拉高点亮的

那应该是LCD的时序配置跟LCD不匹配导致

#37 Re: 全志 SOC » 求助 T113S3 LCD显示有水纹 » 2025-08-25 21:32:07

背光是用PWM调控亮度的吧?是PWM的频率太低了。如果将亮度设成100%就不再闪烁,那就是这个问题。

#38 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » CY7C68013A-56LTXC电脑无反应 » 2025-08-22 17:49:48

20多年的方案了,价格依然不低,不如沁恒的方案性价比高。

#39 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-08-11 11:42:33

MrRaphael 说:

@海石生风
我已经拿到样片了

问了原厂,CH32M030C8已经量产了。
极简的电路方案还有点诱惑的,不过我的电机驱动算法有浮点运算,上这芯片的话得改成整形运算才行,晚点再研究了。

#40 Re: 全志 SOC » T113-i与DDR3芯片地址线连接问题 » 2025-08-09 18:07:46

内存芯片的地址线数量跟它的容量相关呀,内存芯片没有这么多地址线那还能怎么搞?

#41 Re: 全志 SOC » F1C100s有没有可能用有源晶振? » 2025-08-07 10:10:23

无源晶振工作于闭环反馈电路,两个主控的震荡电路就是两个闭环电路,合不了一起。

#42 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-08-05 18:16:10

找到一个,沁恒的CH32M030C8:集成5~28V电压输入LDO、4个半桥驱动器(可组成两个独立H桥)、4个电流采样运算放大器、3个电压比较器。
外加8个MOS管和阻容器件即可驱动步进电机。
集成度、主频、FLASH、RAM都不算高,没有CAN接口,不支持浮点运算,主要应用于极低成本电机驱动场合。不是太合我心水。

#43 Re: 工业芯 匠芯创 » 64MB内存级别的嵌入式Linux UI开发也有类似WPF的MVVM框架了 » 2025-08-02 09:03:47

jlau 说:

@海石生风
那部分zig代码是手写的还是工具生成的?

哪部分代码?model和view-model都是模型,都是业务代码,当然是手写的。
Zig这边的模型都是Zig结构体,而非AWTK的tk_object_t对象;这里的“封装”是将view-model结构体转换为tk_object_t对象,封装手段是泛型反射;可以理解为Zig的view-model在编译时转换成了tk_object_t对象。

在MVVM框架下,model是纯数据模型、view-mode封装了model并添加UI所需的属性和命令用于跟view交互。
而awtk-mvvm其实没有model而只有view-model,而view-model的实现方式是使用代码生成工具将C的结构体转换为tk_object_t对象。

#44 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-07-30 20:11:07

qxxz 说:

@海石生风
CH32M007 不知道满足不满足

这个是专用于3相无刷电机的,不支持步进电机。这类国产方案非常多,卷得厉害,却没有人搞步进的集成方案,所以才有此一问。
不过也不纠结了,MCU+斩波恒流驱动芯片+磁编码器方案无论硬件还是软件都不算复杂。

#45 Re: 全志 SOC » v3s怎么实现模拟i2c---荔枝派 » 2025-07-30 20:05:28

林34 说:

使用硬件的i2c,挂载设备后,偶尔会出现i2c i2c-0: mv64xxx: I2C bus locked, block: 1, time_left: 0导致控制设备失败,所以才想使用模拟i2c。

有硬件I2C肯定首先硬件的啦,迫不得已才会用软件实现,软件I2C搞得再好其CPU占用都会比硬件的高

#46 Re: 全志 SOC » v3s怎么实现模拟i2c---荔枝派 » 2025-07-30 12:26:54

我以前调过软件I2C驱动,记得最初用主线的i2c-gpio驱动是OK的。但忘了是什么原因导致最终没有用主线的i2c-gpio驱动而改为使用MPU厂商提供的软件I2C驱动了。可能也是因为主线的跑得慢吧,记不清了。

#47 Re: 工业芯 匠芯创 » 64MB内存级别的嵌入式Linux UI开发也有类似WPF的MVVM框架了 » 2025-07-30 11:03:50

xfdr0805 说:

这个有意思。我在用WPF的MVVM 用起来很方便。
不过这个zig语言 头一次听说,不了解

声明式UI框架依赖编程语言的泛型和反射特性,目前要在C类似级别的语言上有享有泛型反射,Zig是个不错的选择,虽然它还没达到1.0版本。
Rust可能是另一个选择,但它是C++级别的,复杂度偏高了;调用C也比Zig麻烦好多;故不选Rust。

#48 Re: 工业芯 匠芯创 » 64MB内存级别的嵌入式Linux UI开发也有类似WPF的MVVM框架了 » 2025-07-30 10:47:29

abeachsoul73 说:

Is this complete?

Almost complete. I am planning to use this in my new project.

#49 Re: 全志 SOC » v3s怎么实现模拟i2c---荔枝派 » 2025-07-29 19:08:45

不同芯片厂家的gpio的配置不是完全相同的,我没用过全志的MPU,找了下示例,全志的GPIO端口C的2、3脚似乎是这样配置的:

sda-gpios = <&pio 2 2 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
scl-gpios = <&pio 2 3 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;

#50 Re: 工业芯 匠芯创 » 64MB内存级别的嵌入式Linux UI开发也有类似WPF的MVVM框架了 » 2025-07-29 11:03:24

上述示例工程的界面效果如下:

其中“性别平衡”的显示比较体现MVVM作为声明式框架的优势,其控件的UI描述是这样的:

<label w="30%" v-data:text="{isGenderBalance ? tr('是') : tr('否')}" />

其模型代码是这样的:

    // 虚拟property: isGenderBalance
    pub fn getIsGenderBalance(self: Self, _: []const u8, v: *awtk.Value) c.ret_t {
        var male_count: u32 = 0;
        var female_count: u32 = 0;
        for (self.users.models.items) |item| {
            if (item.gender == .Male) {
                male_count += 1;
            } else {
                female_count += 1;
            }
        }

        _ = c.value_set_bool(v, male_count == female_count);
        return c.RET_OK;
    }

代码就这么多,再没其它的了。这是个虚拟属性,当列表内容增加、减少或列表元素的性别发生变化,其值都会更新。
如果在命令式UI上实现此功能,想必需要添加比较多的事件响应函数,而且整个逻辑代码分散在多个地方,繁琐且容易出BUG.

#51 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-07-28 10:35:03

@dukelec
磁编码器方案在于性价比,而使用带光电编码器的闭环步进也很常见了。

但是就论最极端工况工作温度125℃下误差1度,此时跑FOC虽然不理想,但也是可以跑得动的。
如果实际工况真有125℃,肯定不会上磁编码器而上光电编码器了。所以磁编码器的实现应用误差肯定是比规格书的极限误差小。

TMC的无感FOC方案是电流闭环的改进。现在的步进驱动方案基本都是恒流驱动了,所以做电流闭环是自然而然的事,但电流闭环驱动下依然会有失步风险。所以TMC的无感FOC方案主要是减小无位置传感器时的失步风险,其实应用依然是低速下的位置控制场景。

#52 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-07-26 19:46:24

@dukelec
磁编码器使用前要校准一圈,校准之后精度就可以提高不少。甚至现在已经有磁编码器内置支持客户端功能,比如MT6826经客户端校准后精度在±0.08°之内,跑FOC绝对足够了。

至于行情,市面上早就有步进FOC产品了。TMC就有硬件步进FOC芯片,甚至已经搞步进电机的无感FOC方案了。

#53 工业芯 匠芯创 » 64MB内存级别的嵌入式Linux UI开发也有类似WPF的MVVM框架了 » 2025-07-26 09:57:29

海石生风
回复: 10

基于Zig语言对AWTK的MVVM框架在泛型/反射特性之上进行了封装,实现了类似WPF那样方便使用的MVVM框架。因为由Zig编写,故支持64MB内存级别的嵌入式Linux UI开发。AWTK的MVVM框架使用C语言编写,但因为C语言的特性太少,直接使用这个框架的话会非常不方便,比如:要在头文件添加特定格式的注释、属性不支持多层等。使用Zig封装之后,使用的便利性基本就跟WPF的MVVM差不多了。
比如,UI声明大致如下:

<window v-model="UsersVM" >
    <label v-data:text="{name}" />
    <label v-data:text="{cfg.age}" />
    <label v-data:text="{tr(cfg.gender.str)}" />
    
    <button tr_text="大一岁" v-on:click="{addAge}" />
    <button tr_text="小一岁" v-on:click="{subAge}" />
    <button tr_text="添加" v-on:click="{append}" />
</window>

对应的模型代码大致如下:实现起来是比较直观而且容易的

pub const UsersVM = struct {
    name: awtk.String = undefined,
    cfg: struct {
        age: u8,
        gender: user_model.Gender,
    } = .{
        .age = 0,
        .gender = .Male,
    },

    const Self = @This();

    pub fn addAge(self: *Self) !awtk.Notify {
        self.cfg.age += 1;
        return .PropertyChanged;
    }

    pub fn canAddAge(self: Self) bool {
        return self.cfg.age < 5;
    }

    pub fn subAge(self: *Self) !awtk.Notify {
        self.cfg.age -= 1;
        return .PropertyChanged;
    }

    pub fn canSubAge(self: Self) bool {
        return self.cfg.age > 0;
    }

    pub fn append(self: *Self) !awtk.Notify {
        // 逻辑代码实现

        return .ItemsChanged;
    }

    pub fn canAppend(self: Self) bool {
        return self.name.len() > 0;
    }
};

项目地址在这里:https://gitee.com/ufbycd/awtk-mvvm-zig-example
目前嵌入式Linux已经在D21x平台的D213ECV-DEMO-V4开发板上验证。 另外,Zig的交叉编译也非常方便,上述项目已经内置D21x平台编译支持,编译命令为:

zig build -Dd21x

该命令等效于:

zig build -Dtarget=riscv64-linux-gnu -Dcpu=generic_rv64+i+m+a+f+d+c

可前往项目地址了解更多详情。

#54 Re: Cortex M0/M3/M4/M7 » 请各位推荐小体积的MCU » 2025-07-24 22:58:04

复查了下,CH32V005D6U6 QFN-12(2x2)没有SPI,可惜了

#55 Re: 全志 SOC » v3s怎么实现模拟i2c---荔枝派 » 2025-07-24 18:47:05

源码目录的文档:Documentation/devicetree/bindings/i2c/i2c-gpio.yaml
或在线内核文档:https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-gpio.txt

#56 Re: Cortex M0/M3/M4/M7 » 请各位推荐小体积的MCU » 2025-07-24 18:03:41

不要SCP和BGA的话,小且满足IO的基本是QFN或DFN20脚左右3x3mm的芯片了,选择还挺多的,比如:
STM32L011F4U6TR  UFQFPN-20(3x3)
STM32C011F4U6TR  UFQFPN-20(3x3)
CH32V003F4U6        QFN-20(3X3)
GD32E230F8V6TR    LGA-20(3x3)
PY32F002BF15U6TR QFN-20-EP(3x3)
HC32F002C4UZ-ZFN20TR QFN-20(3x3)

再找了下,还有2x2mm的:
CH32V005D6U6    QFN-12(2x2)

#57 Re: RISC-V » ch32v203使用WCH-LINK-RO-1V3调试,有些变量显示optimized out,被优化省略如何处理 » 2025-07-24 13:28:41

MCU开发我一般用串口调试,只有在项目初期才会用调试器做单步调试。搞个串口命令解析器,串口收发加上缓存这样串口调试基本就不会影响程序执行时序,也是很方便的。

再进一步,就可以将底层收发进行抽象封装,让命令解析器支持实体串口、SDI虚拟串口等。

#58 Re: RISC-V » ch32v203使用WCH-LINK-RO-1V3调试,有些变量显示optimized out,被优化省略如何处理 » 2025-07-23 15:31:47

方法一 只针对变量,其它代码还是会被优化
方法二可以只针对一个代码片段,而非整个函数

#59 Re: RISC-V » ch32v203使用WCH-LINK-RO-1V3调试,有些变量显示optimized out,被优化省略如何处理 » 2025-07-23 12:47:36

阻止编译器对部分代码进行优化即可,实现方式有两种:

一、对变量添加 volatile 关键字后该变量即不会被优化掉;
二、用#pragma GCC optimize 预处理指令指示部分代码的优化等级,如:

#pragma GCC push_options
#pragma GCC optimize("O0")
 // 强制指明O0优化的代码区域
#pragma GCC pop_options

#60 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-07-23 12:24:52

找到问题并基本复现之前狂转的转速了:之前矢量闭环控制的电角度校准出错,导致校准出来的电角度与实现偏差了90度左右。

这90度偏差正好对应弱磁控制理论的超前角控制原理,即在意外地在无形中实现了弱磁控制方式。原先在力矩闭环时转速最多只能跑到500rpm,然后我在原控制算法不变的情况下将电角度增加90度后,力矩闭环的最高转速就飙到2000rpm。

那么步进电机的弱磁控制的基本实现方式为:实现闭环力矩驱动后,添加超前的电角度。而闭环力矩的实现原理是:将交轴和直轴力矩做反Park变换即得电机两相的力矩。

#61 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2025-07-19 21:11:41

244141084 说:

大佬步进电机8个mos怎么做弱磁控制啊,有没有相关教程啊

今天调力矩闭环步进电机驱动软件时,不知哪里改得不对,电机突然狂转,转速飙到3000rpm。
这或许就是你所说的弱磁控制吧,只是后面在正常情况下怎么都复现不了这个转速,有点耐人寻味。
这个驱动器所用的驱动芯片是DRV8870之类的斩波恒流驱动芯片,并用磁编码器实现位置闭环。

#62 Re: 全志 SOC » 请教xboot中mmu的问题 » 2025-07-09 16:18:16

看这个命名样式,盲猜是来自链接脚本

#63 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 盗版CH340的被判刑了 » 2025-07-09 13:22:01

手上有根CH340芯片的USB转RS232串口线,发现在Linux下可正常使用,但在Window10、11下不能正常打开,九成是仿冒芯片了。
估计市面上还有仿冒芯片做成的USB串口线流通,大家需要注意。

仿冒芯片,确实可恶。pin对pin研发芯片不犯法,但这个仿冒芯片通过逆向抄图还共用人家的系统驱动,导致因兼容性而使用户无法正常使用,真的非常可恶。

#64 Re: 全志 SOC » F1C100S使用LVGL显示图片速度很慢,寻求优化建议 » 2025-07-07 21:21:27

hameyou 说:

F1C100S压根没有G2D, 只能优化算了

有JPGE解码器和视频解码器,最简单的优化方法是用播放视频来实现动画

#65 Re: 全志 SOC » F1C100S使用LVGL显示图片速度很慢,寻求优化建议 » 2025-07-07 21:16:28

纸飞机 说:
海石生风 说:

估计CPU都耗在图片解码上了,没有用上G2D?也可以用视频播放来实现动画

转换为C数组后应该是不需要解码了吧?应该是直接显示了。G2D是GPU吗?我记得这个芯片没有GPU

只有图片为非压缩的bmp之类格式,且像素格式跟framebuffer的一致才不需要解码;否则纯CPU解码会非常耗时

#66 Re: 全志 SOC » F1C100S使用LVGL显示图片速度很慢,寻求优化建议 » 2025-07-07 13:46:59

估计CPU都耗在图片解码上了,没有用上G2D?也可以用视频播放来实现动画

#67 Re: 工业芯 匠芯创 » Luban Lite 串口轮循发送函数,没有发送完成就函数返回,导致485芯片发送数据不完整的问题总结 » 2025-06-28 14:22:02

大林 说:

@lqcfly

理论上就算系统回复发送已经完成,也应该延时一下吧,如果直接拉DE脚也会出现数据发送丢失的现象

是的,flush只是确保没有缓存了,但最后一个字节可能还没发送完成。所以至多还要延时10个bit的传输时长。

还有一个方法就是RS485芯片的DE和RE引脚分开控制,让发送的同时使能RE并开启串口接收,当接收到的数据长度跟发送的一致时,表示发送已经完成。
这样做还有一个额外的功能,发送的同时接收,如果接收到数据跟发送的不一致,就表示发送有问题。

#68 Re: RK3288/RK3399/RK1108 » rk3506G从入门到放弃 » 2025-06-25 12:12:57

CPU占用高,应该是G2D没有搞起来;Qt那个示图跑的QML吧,没有GPU跑QML神仙CPU也吃力,所以帧率低。

#69 Re: 工业芯 匠芯创 » Luban Lite 串口轮循发送函数,没有发送完成就函数返回,导致485芯片发送数据不完整的问题总结 » 2025-06-24 12:43:37

芯片支持RS-485硬件自动控制收发方向,即串口支持RS485模式。用硬件RS485-DE引脚不是更方便简单?

#70 Re: 全志 SOC » T113-S3如何检测单片机是否正常运行 » 2025-06-21 13:39:29

无语。T113-S3是微处理器MPU,不叫单片机MCU

#71 Re: 全志 SOC » T113-S3如何检测单片机是否正常运行 » 2025-06-21 11:11:05

没明白电压跟检查工作有什么关系。身高1米8的老板就检查不了身高3米的员工是否正常工作?

你是疑惑两者身高不匹配?办法有两种:
1. 检查工作的时候用分压电阻将员工身体弯下来到1米8即可
2. 直接将员工的身高压缩到1米8来工作,现在很多正常身高是3米3的员工即使身高压缩到1米8依然可以正常工作

#72 工业芯 匠芯创 » linux SDK的构建系统不要自动检测ncurses是否安装了,检测功能不准确 » 2025-06-21 10:31:40

海石生风
回复: 0

linux SDK的构建系统的自动检测ncurses是否安装功能不准确。
Manjaro Linux系统,ncurses被一大堆软件包依赖,肯定是已经安装了的

$ pacman -Q ncurses  
ncurses 6.5-4
$ make menuconfig
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel or libncurses-dev
*** depending on your distribution) and try again.
***
make[1]: *** [Makefile:253:/home/chenss/git/ArtInChip/d211/output/d211_D213ecvDemoV4/build/luban-config/dochecklxdialog] 错误 1
make: *** [package/Makefile.sdk:706:/home/chenss/git/ArtInChip/d211/output/d211_D213ecvDemoV4/build/luban-config/mconf] 错误 2

#74 Re: 全志 SOC » 荔枝派zero通过otg与PC共享网络无法实现 麻了 » 2025-06-06 18:14:47

如果只是为了调试而不是上外网,用ADB调试更简单

#75 Re: 工业芯 匠芯创 » 有没有大佬知道D213ECV的luban-lite数字显示方法? » 2025-06-05 17:02:53

知识储备太低了,问题都问不清楚,搞毕业设计不要急功近利,多看LVGL文档或教程就可以解决

#77 Re: ESP32/ESP8266 » 有朋友能指导一下下面的cr2032供电逻辑吗 » 2025-05-26 09:26:03

U11内部有一个由VOUT指向VIN的二极管,而VSUPPLY为0V时MOS管栅极悬空,此时MOS管应该处于导通状态。
另外不知道MOS管是什么型号,其内也有可能有体二极管由电池指向VSUPPLY。

#78 Re: 全志 SOC » F1C100S驱动i8080的MCU屏画面撕裂有没有解决方法 » 2025-05-20 16:41:23

视觉℡ 说:
海石生风 说:

DE是什么信号?I8080接口本身并没有垂直同步信号,只有个别LCD屏才会有这个额外的垂直同步信号输出,I8080接口显示屏通常叫这个信号为“TE”

写错了  是TE信号

那应该是你更新数据耗时太长,超过LCD刷新一帧的时长了,所以无论你在哪里开始更新都会跟LCD的刷新位置相遇,从而导致画面撕裂。
解决办法有二:一、加快数据传输速率;二、将单次数据更新分成多个操作来完成、一个操作只更新一部分数据。
归根结底,就是要使一个数据更新操作的耗时小于一帧的时长,通过TE信号同步后,就可以保证不跟LCD刷新位置相遇,从而不会撕裂。

#79 Re: 全志 SOC » F1C100S驱动i8080的MCU屏画面撕裂有没有解决方法 » 2025-05-20 12:30:58

DE是什么信号?I8080接口本身并没有垂直同步信号,只有个别LCD屏才会有这个额外的垂直同步信号输出,I8080接口显示屏通常叫这个信号为“TE”

#83 Re: Cortex M0/M3/M4/M7 » DAPLink 信号线要串电阻,,否则容易通信失败。。 » 2025-05-06 21:06:19

@liyucai
粗略来说,应该是这根天线使原线路的阻抗变大,等效于添加了串联电阻。

#84 Re: Cortex M0/M3/M4/M7 » DAPLink 信号线要串电阻,,否则容易通信失败。。 » 2025-05-06 10:41:02

@XIVN1987
只要导线两端连接的不是同一个电压源,都应该加串联电阻进行限流。否则即使两端压差只有0.1V,都会出现短路形成大电流从而影响IO通信。

#85 Re: 工业芯 匠芯创 » 编译问题 gitee下载下来的编译报 python错误 » 2025-04-27 19:52:06

先编译内置的工程,再来整自定义电路板吧。

现在的新手提问,普遍都是给出的信息少得可怜,一般人都懒得鸟

#86 Re: ESP32/ESP8266 » ESP32-P4终于可以购买了, 官网tb开发板499, 小贵, » 2025-04-21 20:05:22

kendmaster 说:

DSP32和全志差距大吗

前者SDK开源,接受社区代码,软件生态丰富;后者SDK闭源,要签协议才能拿到SDK,技术支持要找代理。

#87 Re: 全志 SOC » 一个困扰我很久的问题, 为什么全志的TF/SD卡引导程序都放在8K偏移的位置? » 2025-04-18 15:38:52

TF卡前一两个扇区需要存储分区表,扇区大小通常为4096Byte,所以TF卡前8KiB空间是预留给分区表用的。

#88 Re: 工业芯 匠芯创 » 衡山派sd卡挂载不正常 » 2025-04-16 12:07:39

启动日志上那个黄色字体没看到吗?没试过换SD卡?

#90 Re: 全志 SOC » EA3036 输出电压不对,想请大佬帮忙分析一下。 » 2025-04-11 23:55:41

MPU的1.8V/1.2V 电源功率要求小,一般也就200mA左右,最简单的实现方法是用3脚LDO从3.3V降压过来。

#92 Re: 工业芯 匠芯创 » 使用D12x这款芯片,现在遇到几个问题还请大佬指点 » 2025-03-24 21:49:01

bootloader主程序在 application/baremetal/bootloader/main.c的main函数内,通过调用console_set_bootcmd函数来执行不同介质的启动命令,这些命令在application/baremetal/bootloader/cmd文件夹内。

SDK文档的“SDK 编译”章节对Eclipse和VS Code均有描述

芯片ID读取可参考/bsp/artinchip/drv/efuse/drv_efuse.c(或bsp/artinchip/drv_bare/efuse/efuse.c)的drv_efuse_read_chip_id函数

#93 Re: 工业芯 匠芯创 » gitee上下载下来的luban-lite编译出错,是什么问题? » 2025-03-24 12:38:15

原厂那边人没有用zsh这种比较便利的shell,所以才搞了OneStep命令。并且原厂那边可能OneStep命令用得多,非OneStep命令用得少,所以容易出问题。
我用zsh,根本不需要OneStep命令就用得很便利了。另外,OneStep命令不支持zsh shell,我都懒得提了。

#94 Re: Anyui » anyUI 一款居于LVGL 的HMI 免费面代码 UI开发工具,让UI开发节省99%工作量 » 2025-03-20 21:02:26

就是重复造轮子呗,从侧面体现了lvgl开发工具的不完善,没有一个轮子是真正满意的。

#95 Re: 工业芯 匠芯创 » 新手画了个D133EBS最小系统板,请大佬们帮我找找问题?交流起来 » 2025-03-18 22:04:31

还是遵循官方的硬件指南吧:
- 高速信号(EMMC、SD卡、RMII、RGMII、USB、LVDS、MIPI、DVP) 避免跨越不同参考平面
- QSPI接口 SPI_MOSI、SPI_MISO、SPI_WP、SPI_HOLD、SPI_CLK、SPI_CMD需等长约束(长度差建议不超过20mil)
- USB_DP、USB_DM需等长约束(长度差建议不超过10mil),差分对90欧姆阻抗匹配
等等

特别是USB,换层太多,还没走差分线

#96 Re: RISC-V » rv32 cpu该怎么适配rust,试着模仿写了点但编译出错 » 2025-03-18 16:13:39

rust的策略是用于替代频繁malloc/free的场合,MCU里基本都是静态(static)全局变量,所以rust无用武之地。在这里用rust,反而要搞一堆unsafe,那rust的意义何在?
FFI不是直接调用,绝大部分C/C++之外的语言都支持通过FFI调用C,像C++调用C这种才叫直接调用。FFI很繁琐的。
SDK代码质量差的是小众芯片厂,那么rust社区一般也不支持该小众芯片。

#97 Re: 8051/STC8/AT89C51/N76E003 » 【愚人千虑】C51 编程中的常见陷阱 » 2025-03-18 15:36:00

这不是编译器的问题,而是MCU资源太少的问题。所以8051这种MCU逐渐被ARM、RISC-V这些32位MCU替代。

用低资源MCU做开发是种很悲催的体力活。
本人十多年前用过那种OTP ROM或者Mask ROM的非Flash(不能在线调试只能仿真调试),没有C编译器只能写汇编、汇编之下还没有除法指令的8位MCU时深有体会。

建议不要找这种用低资源MCU的岗位。

#98 Re: 工业芯 匠芯创 » luban-lite的SDK使用IDE开发 » 2025-03-18 11:04:43

regbbs 说:
海石生风 说:

luban-lite是RTOS,上了OS一般都用串口调试,很少用JTAG调试了。思维要转变。

你这就是搞笑了,keil+rtx,用jtag调试不方便吗?有些数据需要查看然后手动修改看逻辑运行结果等,你也用串口?

很奇怪吗?!我裸机开发也只有初期搭最小系统才JTAG调试,绝大部分情况用串口调试。因为搞了类似RT-Thread那样的串口命令解析器。

想测什么功能就写一个单元测试的串口命令,这才是符合软件工程的开发方式。RTOS、嵌入式Linux上都有的串口终端可不是白搭的。
如果不理解串口终端、单元测试的意义,还请不要理会我的发言。

#99 Re: RISC-V » rv32 cpu该怎么适配rust,试着模仿写了点但编译出错 » 2025-03-17 16:12:05

rust太复杂了,在MCU上写rust跟写C++差不多;
MCU上一般是用静态内存分配,用不了rust内存管理的强项;
不能直接调用MCU厂商提供的固件C库,只能用开源社区的库,代码质量反而无法保证;

所以MCU上的rust生态不可能会壮大,最多业余玩-玩而已。

#100 Re: 工业芯 匠芯创 » luban-lite的SDK使用IDE开发 » 2025-03-17 11:18:23

luban-lite是RTOS,上了OS一般都用串口调试,很少用JTAG调试了。思维要转变。

#101 Re: 工业芯 匠芯创 » 关于GUI工具的选型建议 » 2025-03-11 18:29:56

TI 的GPMC吗?跟PBUS是差不多的东西吧

#102 Re: 工业芯 匠芯创 » D133EBS这个芯片性能如何?跟STM32哪款芯片对比呢? » 2025-03-11 15:31:37

STM32的开发工具是好用,但芯片配置上有些地方要弱于国产的, 各有千秋,按需求选型吧。STM32目前没有类似D13x这样集成DDR内存的芯片。

D13x的指令效率稍优于cortex-m4, 但主频是主流cortex-m4芯片的2倍,所以指令性能是主流cortex-m4芯片的2~3倍,但要弱于stm32H750。

#103 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 这个 jlink v11 如何? » 2025-03-05 14:47:24

JLink怎么可能是仿真器!?那是调试器。

仿真器是那种MCU的ROM不是Flash而是OTP或Mask。OTP只能烧录一次;Mask不能烧录,只能将程序做在芯片的光刻掩模上。开发时不能像Flash MCU那样在线调试,只能通过FPGA之类的可编程器件去模拟MCU内核指令即对MCU进行仿真调试。这个FPGA板子才叫仿真器,通常由MCU原厂制作并带个壳子。

#104 Re: 8051/STC8/AT89C51/N76E003 » 请教,avr单片机例程,不明白这个先乘1000再除1000有什么作用。 » 2025-02-24 11:52:01

他是为了保留括号,两种方法都可以。如同进门迈左脚还是右脚,没啥好讨论的。

#105 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » ArtInChip D21 基于 DRM 适配 LVGL V9 » 2025-02-19 11:36:52

我评估过D21 Linux SDK跑AWTK demo,发现开不开G2D其CPU占用跟帧率都差不多。而G2D需要占用非常多的内存,于是直接把G2D关了,跑一般UI应用也是很流畅的。所以一般来说,跑方方正正的绘图UI,不开G2D足够了。

至于AWTK这边G2D的性价比低,不知是AWTK上的图形加速有问题还是其它,就得而知了。

#106 Re: 全志 SOC » 触摸屏提示音 » 2025-02-16 14:25:45

调用QApplication对象的installEventFilter()函数将filter对象安装到app的事件过滤器,filter对象实现eventFilter()函数以处理触摸事件

#107 Re: 工业芯 匠芯创 » Luban-lite rt-thread系统 在SCons4.5.2环境下编译错误的解决办法 » 2025-02-08 10:01:30

方法二改法不太妥当。新版本下,Env.get函数返回的是deque、group.get函数返回的是list,再者不能用加号来组合。最好按下述修改:将deque转为list

diff --git a/kernel/rt-thread/tools/building.py b/kernel/rt-thread/tools/building.py
index 24bcf5cc..cf329981 100644
--- a/kernel/rt-thread/tools/building.py
+++ b/kernel/rt-thread/tools/building.py
@@ -779,8 +779,8 @@ def DoBuilding(target, objects):
             CFLAGS = Env.get('CFLAGS', '') + group.get('LOCAL_CFLAGS', '')
             CCFLAGS = Env.get('CCFLAGS', '') + group.get('LOCAL_CCFLAGS', '')
             CXXFLAGS = Env.get('CXXFLAGS', '') + group.get('LOCAL_CXXFLAGS', '')
-            CPPPATH = Env.get('CPPPATH', ['']) + group.get('LOCAL_CPPPATH', [''])
-            CPPDEFINES = Env.get('CPPDEFINES', ['']) + group.get('LOCAL_CPPDEFINES', [''])
+            CPPPATH = list(Env.get('CPPPATH', [''])) + group.get('LOCAL_CPPPATH', [''])
+            CPPDEFINES = list(Env.get('CPPDEFINES', [''])) + group.get('LOCAL_CPPDEFINES', [''])
ASFLAGS = Env.get('ASFLAGS', '') + group.get('LOCAL_ASFLAGS', '')

for source in group['src']:

#108 Re: BLDC电机驱动 » 直流无刷电机电动工具柔性刹车 » 2025-01-24 21:43:56

panhaojie 说:

请问大佬,刹车电阻的选型有什么讲究吗?

要根据电机的电压和制动功率来选型

#110 Re: 全志 SOC » 8.8元的 ML307R-DL 4G CAT.1 模块 » 2025-01-16 10:13:16

bigzhu 说:

牛逼,好奇怎么做到这么低的价格?光材料成本都不止吧

4G CAT.1其实就跟NB-IOT模块差不多了,后者也是基于4G网络的,差不多是这个价。

#111 Re: BLDC电机驱动 » 步进电机驱动 » 2025-01-15 22:59:03

转速快了之后是不是出现丢步?可能是电机扭矩不够,可以提高电机的驱动电压或更换扭矩更大的电机。

#112 Re: 工业芯 匠芯创 » 求 D211 luban_lite mmc镜像生成配置文件或方法 » 2025-01-15 15:16:34

我之前试过是可以的,需要修改Flash设备类型及额外一些配置,参见这里:

https://whycan.com/t_11354.html

#113 Re: 工业芯 匠芯创 » D133开发板立创衡山派更换SPI NAND后无法输出图像 » 2025-01-15 15:11:36

启动时有错误:"Failed to get mtd config",应该是分区配置有问题

#114 Re: 全志 SOC » 全志f1c100s可以用于工业级应用吗? » 2025-01-14 12:09:53

本站这么多人用全志的芯片却没人回复,说明拿全志做工业级的很少。

#115 Re: Cortex M0/M3/M4/M7 » 稳定的jlink推荐 » 2025-01-11 15:34:36

不知是谁带坏了风气,总想把调试器做低成本而不是做稳定,导致x宝上的调试器特别是DapLink普遍都不稳定。

#116 Re: 工业芯 匠芯创 » d122xx 类型产品有计划移植ardunio开发嘛 » 2024-12-31 17:14:13

真的有人拿arduino来做产品么?总感觉这东西达不到产品级要求,不过拿来做些玩具、搞下电赛是不错。

#117 Re: BLDC电机驱动 » 直流无刷电机电动工具柔性刹车 » 2024-12-31 11:58:53

也可以加入反向扭矩来实现刹车,控制反向扭矩的大小应该就可以控制刹车的柔和度

#118 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-12-27 19:00:20

经测试,同样的板子跑AWTK官方的demoui,在Linux下没开G2D都比RTOS下开G2D的跑得流畅,此时在Linux下没感觉有明显的卡顿。
看来确实时是RTOS的文件系统性能太差了。

跑Linux 1.2.7 SDK 里的AWTK demo出现错误:in aic_cma_buf_malloc, ioctl() failed! errno, heap_fd = 5, size = 2457600,故测不了Linux下开G2D的情况。
希望官方能尽快把这个BUG修复好。

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

正在尝试将基于AWTK的UI软件从RTOS SDK切换到Linux SDK,发现Linux SDK 1.2.7版本的内置AWTK demo跑不起来。
然而之前因为git pull不能成功,只好删除之前的再重新git clone。然而想回滚到上一版才发现上一版的历史已经没有了,最近的只有1.2.3

这样管理git仓库屁用没有!还不如直接将各版本打包,公布其下载链接算了。

#120 Re: BLDC电机驱动 » 直流无刷电机电动工具柔性刹车 » 2024-12-27 11:26:39

电机的电子刹车其实就是停止电机供电并进行续流,那么续流有两种方式:一种是你现在这种通过电机内阻续流,另一种是在外部并入一个由MOS管控制通断的刹车电阻。
第二刹车方式应该可以减小噪音。

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

aozima 说:

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

Linux SDK仓库的历史只剩4条了,明显是为了减小体积而手动删除的。根治体积太大的问题,还是应该按我上面的方法解决。

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

海石生风
回复: 3

因为仓库体积太了,过一段时间就执行“存储库 GC ”导致很多历史被删除?这样用户不好同步呀。

解决仓库体积过大的治根的方法应该是将源码、工具链、预编译二进制包分开到不同的仓库。

现在git仓库过大,超过了1GB,导致非付费gitee用户根本就fork不了源码,从而不能在gitee上进行后续开发的托管。

#123 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » lcd屏幕模组胶粘可靠性 » 2024-12-26 16:05:35

你买的是带显示屏的开发板吧。除非是单色lcd屏或串口屏产品,正经的彩色显示屏不会带PCB

#124 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » lcd屏幕模组胶粘可靠性 » 2024-12-21 17:29:04

不是贴胶的,是通过LCD金属外壳卡住PCB。贴胶久了必定会脱落,不牢靠。

#125 Re: 工业芯 匠芯创 » D21x 的UART的最高速度到底是多少? » 2024-12-21 00:18:15

@gpfrank
D21x UART的字符超时中断就是你说的idle中断

#126 Re: 工业芯 匠芯创 » D133挂载文件失败 » 2024-12-13 21:59:59

rodata文件系统挂载跟luban-lite/target/d13x/<电路板>/pack/image_cfg.json和menuconfig里的配置(Application options  --->Using File System Image 0)都有关系

#127 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-12-10 11:33:08

astankvai 说:

@ArtInChip
目前的很多DEMO都是基于LVGL8的, 包括 USB_OSD_DEMO.

吐槽下LVGL,它的API这么多年了都稳定不下来,几乎每年增大一个大版本号。这看似是发展快速,实则是核心设计有问题,一直稳定不下来。

#128 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 基于LVGL的嵌入式声明式UI框架zdec略有小成! » 2024-12-07 13:07:42

今年年初起的这个项目至今都有任何进展,是因为还有很多细节一直没有搞定。并且LVGL的API一直都不稳定,单单是搞其API绑定层都要不少精力。
因为Zig基本上可以直接调用C,故放弃API绑定层的思路,直接在框架内调用UI库的C接口,并将框架转为MVVM。
MVVM框架本身就规定好了View跟Model的绑定规则,非常适合声明式UI框架。

目前已经基本在awtk-mvvm上添加实现了zig语言支持:https://gitee.com/ufbycd/awtk-mvvm-zig-example,在zig上实现Model要比C/C++方便很多,便捷性几乎跟javascript的差不多。
下一步,将用zig元组替换xml来实现View声明,即实现一个zig的MVVM框架:zig-mvvm
再下一步,将zig-mvvm框架推广到其它UI库,如LVGL等。

因为业余自由时间不是很多,一天至多只能抽出两三个小时,也是随缘更新。

#129 Re: ST/STM8/STM8S/STM8L » STM32 M系列的单片机怎么样才能驱动MIPI屏(ST7701) » 2024-12-06 17:04:07

与非门 说:
hexenzhou 说:

有RGB转MIPI的转换芯片,如:LT8918!

官网提供的规格书就两页,应用起来困难

这种冷门芯片都是这鸟样。建议用串口屏,简单、实在。

#130 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-12-04 17:18:46

@kakatoo
怀疑是RTOS的文件系统性能不太好导致,准备切换到Linux SDK看下是否有改善。RTOS平台还是建议用LVGL

#131 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2024-11-28 20:19:25

@244141084
步进电机转速过了1000RPM没啥意义,此时扭矩太小,带不了载。若真有高转速需求,则不应该选步进电机。

#132 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-11-26 15:56:06

ArtInChip 说:

@海石生风

不是的,等10月份吧,会发布的。

你说的是AiUIBuilder吗?现在11月底咯,何时发布?

#133 Re: BLDC电机驱动 » 有专门针对步进电机的MCU芯片方案么? » 2024-11-26 13:33:19

244141084 说:

大佬步进电机8个mos怎么做弱磁控制啊,有没有相关教程啊

弱磁控制用于高转速场合吧,步进电机跑不了高转速。提高步进电机驱动效率主要靠电流闭环或力矩闭环驱动方式。

#134 Re: ESP32/ESP8266 » 关于SIMD如何学习的文档 » 2024-11-22 11:37:48

MCU芯片或内核原厂一般都会封装好C接口,比如Cortex-M4/M7的SIMD指令封装在CMSIS软件包的cmsis_gcc.h(ARMCC对应的似乎是cmsis_armclang_lit.h)里。
一句话,找到官方资源即可。

#135 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » AWTK 开源智能串口屏方案发布 » 2024-11-11 10:13:29

我用AWTK有一两年了,只要在awtk.zlg.cn网站保持登录就会持续发放LIC。
不过我不怎么用AWStudio,实际项目都是手写UI描述文件XML,特别是用了MVVM的情形。即使是手写XML肯定也比LVGL好用,LVGL现在才开始搞UI描述文件。

如果对MVVM感兴趣,可以关注我这几天的研究成果,用zig写MVVM应用,利用zig的泛型/反射特性直接从Model构建出View-Model:
https://gitee.com/ufbycd/awtk-mvvm-zig-example

#136 Re: 工业芯 匠芯创 » d133裸机如何进行中文显示(不用lvgl) » 2024-11-01 17:45:56

海绵宝宝 说:
海石生风 说:

你的显示屏是单色点阵LCD吧 
单色LCD显示用的是位图,用字体取模软件取出的字模就是字符的位图,将位图显示到LCD即可。英文、汉字的做法都一样。

如果是RGB呢

把一个字体当作一张图片来显示即可,彩色字体取模其实就是取它的图像。

不过彩色屏下建议还是用UI库,UI库有显示缓存优化处理,要比手动显示图片的效率高。

#137 Re: 硬件设计 KiCAD/Protel/DXP/PADS/ORCAD/EAGLE » 以太网口出的信号,大家是用什么设备检测的?直接电脑ping? » 2024-10-31 13:08:53

示波器 + 差分探头,调节示波器的扫描周期与以太网信号同步时就会看到眼图,眼图越干净说明信号质量越好。

#139 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » c++ 11 编译代码 条件变量阻塞状态 wait失效 » 2024-10-24 15:24:47

既然怀疑编译器。那它啥版本?哪来的?换过编译器没有?

#140 Re: 工业芯 匠芯创 » D213ECV 使用 Aiburn 无法烧录 » 2024-10-22 15:22:49

可能是USB线材的问题,我在linux上开虚拟机跑windows来烧录都很稳定

#142 Re: 工业芯 匠芯创 » 请教下Linux下研发的工具和各种文档 » 2024-10-17 13:05:43

linux sdk还没怎么研究,最好找官方技术支持

#143 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 请教rtt目录下的menuconfig.py和python库里的menuconfig.py名字冲突了,如何解决呢? » 2024-10-14 17:02:24

也可用python -m venv 为sdk单独创建一个的scons运行环境,不要将其它软件安装到这个环境即可。

#144 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 请教rtt目录下的menuconfig.py和python库里的menuconfig.py名字冲突了,如何解决呢? » 2024-10-14 14:31:17

将sdk里的python脚本目录添加到环境变量PYTHONPATH,import时PYTHONPATH的优先级高于site-packages

不过建议,如果site-packages/menuconfig.py相关软件不是很重要,最简单的方法还是将其删除。

#145 Re: 工业芯 匠芯创 » 请教如何定位D133程序崩溃的位置 » 2024-10-12 16:42:40

目前来说比较好的手段是连接jtag调试器来调试,不然真不好找CPU异常出处。除非异常发生于系统启动阶段,此时可以打log调试。

建议官方将CmBacktrace移植到RISC-V,方便追踪程序崩溃位置。

#146 Re: 工业芯 匠芯创 » D133EBS LVGL 显示异常 » 2024-10-12 16:33:04

屏没花呀,有没有可能:显示一直都有问题,只是彩色条纹界面没有将问题显示出来而已?

#147 Re: 工业芯 匠芯创 » D133运行流程 » 2024-10-12 16:27:30

了解下RT-Thread的这个宏INIT_APP_EXPORT,就知道了

#148 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » PC 显示器的驱动芯片 » 2024-10-10 16:47:01

显示器接口都支持DDC/CI协议,走的是I2C,可以获取显示器的分辨率等信息,并可以控制显示器的亮度、色温等。

当前Linux的KDE桌面默认配置下就可以通过软件来调节台式机显示器的亮度,利用的就是DDC/CI协议

#149 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 关于 FreeRTOS 中 delay 函数的问题 » 2024-10-03 13:27:46

RTOS使用systick溢出中断的分辨率是毫秒,其计数器VAL的分辨率小于微秒。两者结合可以得到微秒分辨率的计时

#150 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » CPU,MCU,SoC 的术语使用混乱问题 » 2024-10-01 16:17:48

shiinakaze 说:

@海石生风
如果你连基本概念都分不清,确实对你来说是废话。

platform和SoC你倒是分清概念呀,无非嘴硬。懒得鸟了,浪费时间。

#151 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » CPU,MCU,SoC 的术语使用混乱问题 » 2024-10-01 12:16:51

shiinakaze 说:

@海石生风
这不就是我文章里面已经提到的东西么,还有严格来说 CPU 只是一个计算机架构中的一个抽象模型,并不是一个实际物体,文章的所有内容来自论文和 wikipedia 的说明,并非我自顾自的意想。

抓不住精髓,废话一堆,没啥鸟用。

一堆东西放在一起,你要分清本质区别,才不会乱!

#152 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » CPU,MCU,SoC 的术语使用混乱问题 » 2024-10-01 08:52:06

没有搞清名词概念及厂商为何那么叫,自然就没有把事情说清楚,不清楚就是乱。

CPU(处理器):注重处理的吞吐量指标,用于台式机、服务器等大功率设备
MPU(微处理器):注重处理的吞吐量指标,用于手机、平板等小型设备
MCU(微控制器):注重实时控制,且功耗非常小
DSP(数字信号处理器):注重数字信号处理的实时控制,是MCU的细分领域
SoC(片上系统):集成度较高的一类芯片的统称,其处理单元可以是MPU、MCU等
platform跟SoC是同一个东西,platform强调其芯片中的处理单元指标只占整体指标很少一部分

#153 Re: ESP32/ESP8266 » ESP32S3 通过USB无法烧录 » 2024-09-29 21:03:06

接触不良,要么是线、要么是接口

#154 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » CPU,MCU,SoC 的术语使用混乱问题 » 2024-09-26 23:23:50

你这越搞越乱啦。
狗,有大狗、小狗,白狗、黑狗,肥狗、瘦狗,田园犬、斗牛犬,这么多说法。乱了吗?没乱。是因为不同叫法表达的是同一个事物的不同侧面。
之所以乱,是因为你没有搞清这些叫法的分类方法。MPU跟SOC明显是不同的分类,如同白狗跟肥狗,牛头不对马嘴!

#155 Re: 工业芯 匠芯创 » D21x RTOS SDK 1.0.5使能AWTK并添加C++源码后系统运行异常 » 2024-09-24 19:08:05

找到问题了!D21x是64位机,C++的初始化函数表.init_array应该是8字节对齐的,而SDK的链接脚本里弄成4字节对齐了。
按以下patch将链接脚本里的改为8字节对齐即可:

diff --git a/bsp/artinchip/sys/d21x/link_script/gcc_aic.ld.S b/bsp/artinchip/sys/d21x/link_script/gcc_aic.ld.S
index 7600a467..561a79ed 100644
--- a/bsp/artinchip/sys/d21x/link_script/gcc_aic.ld.S
+++ b/bsp/artinchip/sys/d21x/link_script/gcc_aic.ld.S
@@ -149,7 +149,7 @@ SECTIONS
*(.rodata.*)
*(.srodata*)
*(.rodata.str1.4)
-  . = ALIGN(0x4) ;
+  . = ALIGN(0x8) ;
PROVIDE(__ctors_start__ = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))

#156 Re: 工业芯 匠芯创 » D21x RTOS SDK 1.0.5使能AWTK并添加C++源码后系统运行异常 » 2024-09-24 16:26:12

试过将main线程栈开到4MB都一样。C++代码如下,非常简单,且只是加入编译没有在其它地方调用C++源码的函数。
发现只要用了C++的标准库就出问题,不用C++标准库就没有问题;即使能宏ENABLE_CPP_STD就会出问题

#include <stdio.h>

#define ENABLE_CPP_STD 1

#if ENABLE_CPP_STD
#include <vector>
#endif

class MyOutputStream {
public:
    MyOutputStream(){}

    MyOutputStream& operator<<(int v) {
        printf("%d", v);
        return *this;
    }

    MyOutputStream& operator<<(unsigned int v) {
        printf("%u", v);
        return *this;
    }

    MyOutputStream& operator<<(long int v) {
        printf("%ld", v);
        return *this;
    }

    MyOutputStream& operator<<(unsigned long int v) {
        printf("%lu", v);
        return *this;
    }

    MyOutputStream& operator<<(char v) {
        printf("%c", v);
        return *this;
    }

    MyOutputStream& operator<<(const char* v) {
        printf("%s", v);
        return *this;
    }

    MyOutputStream& operator<<(char* v) {
        printf("%s", v);
        return *this;
    }
};

class A {
public:
    A();
    ~A();

private:
#if ENABLE_CPP_STD
    std::vector<int> vi;
#endif

    MyOutputStream cout;
};

A::A()
{
    cout << "A init\n";

#if ENABLE_CPP_STD
    vi = {1, 2, 3};
    vi.push_back(4);
    vi.push_back(5);

    cout << "is size:" << vi.size() << '\n';
    for(auto &i: vi) {
        cout << i << ", ";
    }
    cout << '\n';
#endif
}

A::~A()
{
    cout << "A deinit\n";
}

void a_test()
{
    A a;
}

#157 工业芯 匠芯创 » D21x RTOS SDK 1.0.5使能AWTK并添加C++源码后系统运行异常 » 2024-09-24 13:51:35

海石生风
回复: 3

经测试AWTK和C++源码只要不是同时使能,系统都能正常运行。但两都同时使能编译在一起运行就会进入不了main函数并出现Exception如下:

CPU Exception: NO.1
x1(ra)   : 00000000400361c6     x2(sp)   : 00000000402de558     x3(gp)   : 000000004026e530f
x5(t0)   : 000000004026fef8     x6(t1)   : 0000000000000002     x7(t2)   : 00000000000000724
x9(s1)   : 0000000040269670     x10(a0)  : 0000000000000000     x11(a1)  : 00000000000000008
x13(a3)  : 00000000402a35a0     x14(a4)  : 0000000066f25211     x15(a5)  : 401f1830000000008
x17(a7)  : 0000000000000064     x18(s2)  : 00000000deadbeef     x19(s3)  : 00000000deadbeeff
x21(s5)  : 00000000deadbeef     x22(s6)  : 00000000deadbeef     x23(s7)  : 00000000deadbeeff
x25(s9)  : 00000000deadbeef     x26(s10) : 00000000deadbeef     x27(s11) : 00000000deadbeefa
x29(t4)  : 0000000000000190     x30(t5)  : 000000000000002d     x31(t6)  : 0000000000000000
mcause   : 0000000000000001
mtval    : 0000003000000000
mepc     : 0000003000000000
mstatus  : 8000000a00007880

完整启动日志如下:

tinySPL [Built on Sep 11 2024 16:34:02]
[W] usbh_is_connected()105 usb 1 port change wait failed.
[E] main()172 Not find udisk.
qspi0 freq (input): 91636363Hz
qspi0 freq ( bus ): 91636363Hz
nftl vol: data, size 0
Selecting default config 'Luban-lite firmware'
spl read: 2549040 byte, 348034 us -> 7152 KB/s
Boot time:
108099 : Enter main
109631 : Clock and pinmux done
110143 : Console UART ready
111287 : Heap init done
114980 : Banner shown
204155 : UDISK checked
571345 : Run APP
Welcome to ArtInChip Luban-Lite 1.0.5 [D21x Inside]
Built on Sep 24 2024 13:43:04
09-24 13:45:53 I/PWM main: ArtInChip PWM loaded
09-24 13:45:53 I/touch main: rt_touch init success
09-24 13:45:53 I/gt911 main: touch device gt911 init success
[I] aic_find_panel()83 find panel driver : panel-lvds
[I] aicfb_probe()978 fb0 allocated at 0x42000040
[I] hal_ge_init()1620 dither line phys: 0x424B0100
[I] pcm1803a_init()22 pcm1803a init
09-24 13:45:53 I/PSADC main: ArtInChip PSADC loaded
[I] aic_sdmc_clk_init()548 SDMC1 sclk: 50400 KHz, parent clk 1008000 KHz
09-24 13:45:53 I/SDMC main: SDMC1 BW 1, sclk 50400 KHz, clk 400 KHz(406 KHz), div 2-62

[I] aic_sdmc_probe()665 SDMC1 driver loaded
qspi0 freq (input): 91636363Hz
qspi0 freq ( bus ): 91636363Hz
[I] spinand_info_read()473 find raw ID efaa2200
[I] spinand_flash_init()524 Enabled BUF, HWECC. Unprotected.
nftl vol: data, size 0
09-24 13:45:53 I/sensor main: rt_sensor[temp_tsen_cpu] init success
09-24 13:45:53 I/WDT main: ArtInChip WDT loaded
CPU Exception: NO.1
x1(ra)   : 00000000400361c6     x2(sp)   : 00000000402de558     x3(gp)   : 000000004026e530f
x5(t0)   : 000000004026fef8     x6(t1)   : 0000000000000002     x7(t2)   : 00000000000000724
x9(s1)   : 0000000040269670     x10(a0)  : 0000000000000000     x11(a1)  : 00000000000000008
x13(a3)  : 00000000402a35a0     x14(a4)  : 0000000066f25211     x15(a5)  : 401f1830000000008
x17(a7)  : 0000000000000064     x18(s2)  : 00000000deadbeef     x19(s3)  : 00000000deadbeeff
x21(s5)  : 00000000deadbeef     x22(s6)  : 00000000deadbeef     x23(s7)  : 00000000deadbeeff
x25(s9)  : 00000000deadbeef     x26(s10) : 00000000deadbeef     x27(s11) : 00000000deadbeefa
x29(t4)  : 0000000000000190     x30(t5)  : 000000000000002d     x31(t6)  : 0000000000000000
mcause   : 0000000000000001
mtval    : 0000003000000000
mepc     : 0000003000000000
mstatus  : 8000000a00007880

#159 Re: 工业芯 匠芯创 » D133EBS使用 » 2024-09-20 11:56:19

Gentlepig 说:

据说100脚的封装管脚特别密,不好画板还是不好加工来着。

88脚、100脚、128脚封装的引脚间距分别为:0.4mm、0.4mm、0.35mm

#160 Re: 工业芯 匠芯创 » 看到gitee有D215了 » 2024-09-18 22:27:19

soso 说:

有没有便宜点的板子,官方目前板子太贵,哈哈哈

现在的年经人呀,三四百的板子都喊贵。我以前刚毕业的时候,Linux开发板动不动都是过千的!

#161 Re: 工业芯 匠芯创 » 请教下Linux下研发的工具和各种文档 » 2024-09-18 22:03:40

其实就一个问题:烧录工具软件只支持Windows。可能是官方错认为大家都是在Windows下用虚拟机Linux做开发,实则在实体Linux下做开发的应该不在少数,MACOS也算类Linux环境。

RTOS SDK那边有Linux下的命令行烧录工具(upgcmd),但不稳定,且不支持指定分区烧录。
Linux SDK那边还没怎么研究,似乎没有Linux烧录工具。不过Linux下如果板子有网口很少在开发时直接烧录,而是通过网络共享的方式应用新固件或App,但没看到有文档介绍。板子没网口的话,也只能通过烧录来验证调试。

本人的开发环境是实体ManjaroLinux,目前用RTOS SDK做开发,SDK依赖库都能装上、源码编译无问题,唯独要时常开个Windows虚拟机来做烧录,肯定是不便利的。

#162 Re: 工业芯 匠芯创 » Linux系统驱动步进电机方案探索 » 2024-09-15 20:15:14

david 说:

找根IO线控制方向 用SPI的MOSI产生波形 事先算好了转化成SPI数据 DMA过去

确实是种办法,不过D21x的Linux驱动还是有可能支持加减速控制的,SPI这个办法应该是最后的手段了。

#163 Re: 工业芯 匠芯创 » Linux系统驱动步进电机方案探索 » 2024-09-13 17:41:36

wupaul2001 说:

或者你可以看看T113,内置异构核,应该可以实现你想要的功能

工业应用一般都要求实时控制,所以有不少MPU+MCU的多核异构芯片方案,期待匠芯能出这种方案。全志就算了,SDK都藏头躲尾的。

#164 Re: 工业芯 匠芯创 » Linux系统驱动步进电机方案探索 » 2024-09-13 17:24:57

wupaul2001 说:

外挂一个MCU吧,两块多,你要精准控制,Linux做不到的

不是成本的问题,增加控制器无论是硬件还是软件整体复杂度都增加不少。

#165 Re: 工业芯 匠芯创 » Linux系统驱动步进电机方案探索 » 2024-09-13 17:17:12

AICxia 说:

D21x本来就是面向显控一体应用的,有专门用于电机控制的PWM,可以使用这些PWM输出step/dir波形。

看了下linux sdk里的PWM驱动,跟rtos sdk一样只实现了经过多个固定频率的PWM周期后就关闭PWM的功能。但这实现不了step/dir接口的加减速控制呀,加减速控制需要每经过一个PWM周期就修改一次频率!

不过改下linux驱动还是可以实现的,目前在rtos sdk上就是改了驱动才能实现加减速控制。

也是个好消息,D21x在Linux下是可以实现步进电机的加减速控制的,只是要修改下驱动。单主控方案没问题。

#166 工业芯 匠芯创 » Linux系统驱动步进电机方案探索 » 2024-09-13 10:32:43

海石生风
回复: 12

目前手上有个带7寸显示屏和步进电机的新项目,用的是D21x单主控方案。步进电机只需控制AB点往返,但需要加减速控制,而Linux的PWM不支持细粒度控制,所以选了RTOS SDK进行开发,UI用AWTK。也是第一次用RT-Thread,但发现其代码质量和功能都要弱于Linux,后续还是打算切换到Linux,这就需要搞定Linux下的步进电机的加减速控制。

之前已经研究过播放wav音频 + 音频功放驱动步进电机是可行的,参见这里:

https://www.bilibili.com/video/BV1nj411D754

然而D21x的音频输出信号不是模拟信号而是PWM信号,是否可以参考上述方案用这个PWM实现step/dir接口的步进电机驱动?或者是否有其它更好的单主控驱动方案?

#167 Re: 工业芯 匠芯创 » AiBurn制作SD启动卡失败!什么原因? » 2024-09-04 13:05:26

gemrisk 说:

@海石生风

制作启动卡,要确认用的是MMC存储介质的固件

AiBurn上不是已经显示固件的存储介质是MMC了么?这个还不算?

#168 Re: 工业芯 匠芯创 » d133裸机如何进行中文显示(不用lvgl) » 2024-09-03 17:07:18

你的显示屏是单色点阵LCD吧 
单色LCD显示用的是位图,用字体取模软件取出的字模就是字符的位图,将位图显示到LCD即可。英文、汉字的做法都一样。

#169 Re: 全志 SOC » 三张Linux I2S声卡可以玩 5.1杜比音效吗? » 2024-09-01 17:30:46

混音、降噪等操作作得不好反而会削弱声音的立体感,因为这些操作会影响音频信号的相位,如果左右或前后两边的信号相位差过大就不能产生声像定位,从而丢失立体感。

这就是为什么由单个全频喇叭组成的低价2.0音箱会比高价的分频音箱具有更好的立体感。分频器,无论是硬件式还是软件式都会影响音频相位。

#170 工业芯 匠芯创 » AiBurn制作SD启动卡失败!什么原因? » 2024-09-01 17:01:48

海石生风
回复: 3

以管理员身份启动AiBurn,点击“格式化SD卡”操作成功,但点击“开始”后显示失败。尝试多次也一样,1.4.3版也一样。
-3.png

日志如下:

[debug] Start make bringup SDcard ...
[debug] Progress range: 0 ~  6821888

[debug] Make bringup SDcard 2 from "D:/projects/IF-100/image/d21x_if100-v1_v1.0.0.img" 

[error] Failed to get partList

#171 Re: 全志 SOC » linux 6怎么操作全志的GPIO呢? » 2024-08-30 22:52:37

你Linux用得少吧,哪个开源项目不都是这样,版本号:官网Release版本 > ArchLinux软件仓库版本 > Ubuntu软件仓储版本

ubuntu软件包一般都比较老旧,你在ubuntu上安装或编译最新版本很容易掉进依赖地狱。

另外,我看了下:官方最新版没有到3,最新的是2.1.3,ArchLinux这边是2.1.2;官方文档最新版是2.1.2

#172 Re: 全志 SOC » linux 6怎么操作全志的GPIO呢? » 2024-08-30 17:29:37

内核都已经废弃gpio sysfs了,为什么还要用?libgpiod不好用?

sysfs实际上是一个调试或配置工具,后者才对编程友好。

#173 Re: 全志 SOC » ubuntu 22.03不能显示中文是哪里不对啊? » 2024-08-28 17:17:16

@ubuntu
是pty可以认为是pts,默认情况应该支持中文。可以做以下尝试:
- 确认远程机的/etc/locale.gen文件是否有en_US.UTF-8 跟 zh_CN.UTF-8
- 将locale改为zh_CN.UTF-8
- 检测本机中文字体中否正确安装

#174 Re: 全志 SOC » ubuntu 22.03不能显示中文是哪里不对啊? » 2024-08-28 17:07:11

前提条件要说明清楚:这是tty终端还是pts虚拟终端?
tty终端默认不支持中文显示,需要对内核打补丁才能支持中文
pts可以理解为是在桌面环境内打开的终端模拟器,ubuntu默认pts应该支持中文

#175 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-08-28 16:52:19

哦,如果LCD刷新模式选择为swap_ex mode就不会因为 局部text更新而触发整屏刷新。

进一步测试发现是贴图导致刷新缓慢:如果没有任何贴图UI是比较流畅的,但只要有一个哪怕是非常小的贴图,刷新耗时就会超过100ms

#176 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-08-28 09:48:38

再次测试chart demo,可以肯定,是移植有问题:打开宏ENABLE_PERFORMANCE_PROFILE后,在demo主界面只有顶部app bar的时间在按秒更新,其它元素静止时,时间每更新一次就会有以下打印信息:

packages/third-party/awtk-ui/awtk/src/base/lcd_profile.c:322                                           
-------------------------------------                                                                  
  total_cost=490                                                                                       
  draw_image_cost=4 times=6                                                                            
  draw_text_cost=0 times=26                                                                            
  fill_cost=3 times=4                                                                                  
  stroke_cost=0 times=0                                                                                
  end_frame_cost=4                                                                                     
-------------------------------------

其中 total_cost 指的是界面刷新耗时毫秒数,这里要490ms,太离谱!
上述调试说明参见这里: https://gitee.com/zlgopen/awtk/blob/master/docs/optimation.md#%E4%BA%8C%E5%B7%A5%E5%85%B7

根据上述信息可以得出UI性能弱鸡原因:
- 局部text更新触发整屏刷新
- 整屏刷新耗时半秒

每一条都是逆天般的存在!

再细看源码,LCD显存只开了双buffer没有开三buffer,AWTK官方说三buffer可以大大提高帧率。
像D21x这样的MPU HMI芯片只支持LVGL是不够的,LVGL的中文输入都是个问题,这个问题我另外发帖说明。

#177 Re: 工业芯 匠芯创 » d122串口升级失败 » 2024-08-27 16:57:53

搞电子工程就是要假设一切皆有可能,不能有侥幸心理。

#178 Re: 工业芯 匠芯创 » D2X怎么构建自己的工程? » 2024-08-26 15:00:11

按上述改动后不知为何每次编译都更新compile_commands文件,导致编译时间变长好多。于是按下述修改,改为只有添加命令行参数时才更新:scons --cdb

# compilation database
AddOption('--cdb', dest='cdb', action='store_true', default=False, help='generate compilation database')
if GetOption('cdb'):
    env.Tool('compilation_db')
    compilation_db_file_name = PRJ_KERNEL + '_compile_commands.json'
    env.CompilationDatabase(compilation_db_file_name)

#179 Re: 工业芯 匠芯创 » d122串口升级失败 » 2024-08-26 14:54:35

估计是波特率误差较大导致,要根据时钟参数计算波特率误差来选择合适的波特率。

#180 Re: 工业芯 匠芯创 » D2X怎么构建自己的工程? » 2024-08-23 13:48:30

又有新发现,scons本身就可以生成compile_commands.json文件。按下述diff修改SDK根目录上的SConstruct文件:

diff --git a/SConstruct b/SConstruct
index 9750ab30..a51b0846 100644
--- a/SConstruct
+++ b/SConstruct
@@ -102,6 +102,11 @@ env['ASCOM'] = env['ASPPCOM']
# signature database
env.SConsignFile(PRJ_OUT_DIR + ".sconsign.dblite")

+# compilation database
+env.Tool('compilation_db')
+compilation_db_file_name = PRJ_KERNEL + '_compile_commands.json'
+env.CompilationDatabase(compilation_db_file_name)
+
Export('RTT_ROOT')
Export('rtconfig')

- 编译boot时会生成baremetal_compile_commands.json
- 编译rt-thread时会生成rt-thread_compile_commands.json

那么搞两个项目Configuration分别叫boot和rt-thread分别各自使用上面的json db文件就可以灵活地对boot和rtos码字时进行完满的代码补全和阅读跳转了。
_20240823_135415.png
_20240823_135454.png
_20240823_135442.png

#181 Re: 全志 SOC » T113的tina编译gtk报错 » 2024-08-23 09:40:11

T113没有GPU吧,所有没有wayland-egl, 这个是wayland众多后端中的一个。换一个后端即可,T113支持的wayland后端应该有:fbdev、DRM、X11

而wayland是gtk的后端之一,如果要用X11的话,不如直接配置gtk使用X11作为后端。

#182 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » ubuntu的备份文件如何复制到U盘 » 2024-08-20 09:46:08

Linux系统对U盘大小没有限制。你的U盘的分区格式可能是NTFS的,非最新版Ubuntu默认可能不支持此格式。
这种情况有以下解决办法:

1. 对Ubuntu添加NTFS支持
2. 升级到最新版的Ubuntu
3. 将U盘分区格式化为FAT32格式

#183 Re: 全志 SOC » 有没有tf卡座接口的sd芯片啊? » 2024-08-20 09:34:22

TF卡座封装只有单侧焊盘,没有SOP8双侧焊盘的牢固。

工业产品内置的TF卡,肯定不是主存储器,主要用来存储不太重要的内容。

#184 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » ubuntu的备份文件如何复制到U盘 » 2024-08-19 09:30:25

插入U盘-挂载U盘-复制-粘贴?
你问1+1等于几,别人都不敢回复了 yikes

#185 Re: 工业芯 匠芯创 » 52位的GTC计时器数值为什么要特意转成格雷码?根本没法用! » 2024-08-13 14:36:47

@xdlkliang
不行呀,在读取过程中产生进位,即是高低两个寄存器都已经变化了呀,那么两个寄存器都要重新读取。

所以要用do while流程来或以下的if流程来处理:

	hi = csi_coret_get_valueh();
	lo = csi_coret_get_value();

	// 产生进位的时间间隔是很长的,不可能在短时间内产生两次进位
	if(hi != csi_coret_get_valueh()) {
		hi = csi_coret_get_valueh();
		lo = csi_coret_get_value();
	}

#186 Re: 工业芯 匠芯创 » 52位的GTC计时器数值为什么要特意转成格雷码?根本没法用! » 2024-08-13 12:05:51

"把左移操作放到运算符右边"还不行吧,参照Linux SDK那边(linux-5.10/arch/riscv/include/asm/timex.h)应该改成如下才行吧:

u64 aic_get_ticks(void)
{
	u32 hi, lo;

	do {
		hi = csi_coret_get_valueh();
		lo = csi_coret_get_value();
	} while (hi != csi_coret_get_valueh());

	return ((u64)hi << 32) | lo;
}

#187 Re: 工业芯 匠芯创 » 52位的GTC计时器数值为什么要特意转成格雷码?根本没法用! » 2024-08-11 15:37:40

发现RTOS SDK里有这个API:aic_get_time_us,其实现就是读time寄存器,于是找到上面问题的原因了。

我用的芯片是D21x,其CSR寄存器time是64位的,所以此芯片应该没有timeh寄存器,只需读time寄存器即可。
那么,基本上只需两条指令就能获取分辨率为1us的时基,不错!

最后D21x上读取内核时基的函数如下,D13x等32位MCU就没那么便利了:要读取寄存器2次且需处理读取过程中的进位情况

static inline uint64_t _read_csr_time(void)
{
    uint64_t value;

    __asm__ __volatile__ ("csrr %0, time\n\t"
            : "=r" (value) :
            : "memory");

    return value;
}

PS:RTOS SDK里d13x、d12x等读取系统时基的函数 aic_get_ticks,没有处理读取过程中可能出现的进位情况(读取时低32位寄存器发生32位进位),是否是一个BUG?!

u64 aic_get_ticks(void)
{
    return (((u64)csi_coret_get_valueh() << 32U) | csi_coret_get_value());
}

#188 Re: 工业芯 匠芯创 » 52位的GTC计时器数值为什么要特意转成格雷码?根本没法用! » 2024-08-11 10:31:59

@xdlkliang
感谢解答。我上面的需求说法有误,我要的是分辨率为1us,精度是us级(10us左右)的时基计时。
我测试了第二种方式,发现读取timeh寄存器时会再现cpu异常。寄存器读取函数如下:

static inline uint32_t _read_csr_time_lo(void)
{
    uint32_t value;

    __asm__ __volatile__ ("csrr %0, time\n\t"
            : "=r" (value) :
            : "memory");

    return value;
}

static inline uint32_t _read_csr_time_hi(void)
{
    uint32_t value;

    __asm__ __volatile__ ("csrr %0, timeh\n\t"
            : "=r" (value) :
            : "memory");

    return value;
}

RTOS SDK 1.0.5下经测试读寄存器time没有问题,读寄存器timeh时出现cpu异常:

CPU Exception: NO.2                                                                                                                                                                                               
x1(ra)   : 00000000400338b8     x2(sp)   : 000000004022d2c8     x3(gp)   : 00000000401ba318     x4(tp)   : 00000000deadbeef                                                                                       
x5(t0)   : 00000000401bbef8     x6(t1)   : 0000000000000001     x7(t2)   : 00000000deadbeef     x8(s0/fp): 0000000000000006                                                                                       
x9(s1)   : 00000000400bb7e0     x10(a0)  : 0000000000000001     x11(a1)  : 000000004022d2e8     x12(a2)  : ffffffff00000000                                                                                       
x13(a3)  : 0000000040223228     x14(a4)  : 0000000000000000     x15(a5)  : 0000000000000000     x16(a7)  : 0000000000000009                                                                                       
x17(a7)  : 0000000040223228     x18(s2)  : 0000000040223222     x19(s3)  : 0000000040150570     x20(s4)  : 00000000401829f8                                                                                       
x21(s5)  : 0000000040150900     x22(s6)  : 000000004015bd28     x23(s7)  : 00000000401c2400     x24(s8)  : 000000000000000d                                                                                       
x25(s9)  : 0000000040223222     x26(s10) : 0000000040222dd0     x27(s11) : 00000000deadbeef     x28(t3)  : 0000000000000022                                                                                       
x29(t4)  : 000000000000005c     x30(t5)  : 000000000000000a     x31(t6)  : 00000000deadbeef                                                                                                                       
mcause   : 0000000000000002                                                                                                                                                                                       
mtval    : 00000000c8102773                                                                                                                                                                                       
mepc     : 00000000400bb7f0                                                                                                                                                                                       
mstatus  : 8000000a00007880

什么问题?

#189 Re: 工业芯 匠芯创 » 匠芯创 D211,7寸mipi屏核心板 » 2024-08-09 17:51:00

另外一个值得注意的是rt-thread第三方包的代码质量很一般。

比如目前用到的Third-party packages里的beep和at24cxx的代码质量一般,使用前要优化下才能放心用。

#190 工业芯 匠芯创 » 52位的GTC计时器数值为什么要特意转成格雷码?根本没法用! » 2024-08-09 14:59:53

海石生风
回复: 9

想用GTC实现1us精度的时基计时,搞完才发现这玩意是格雷码的!格雷码转自然码要耗费几十上百个指令周期,即根本实现不了微秒级精度。

格雷码用途何在?!

#191 Re: 工业芯 匠芯创 » 匠芯创 D211,7寸mipi屏核心板 » 2024-08-09 14:47:04

luban-lite的驱动分了三层,从上到下分别是:rt-device、drv、hal。大部分情况rt-device驱动即能满足要求,但也可以配合使用drv或hal驱动,后者就是你所说的标准mcu。类似于STM32的HAL和LL驱动混用。

比如我就对pwm的drv驱动稍做修改以添加中断处理函数,从而实现STEP/DIR接口的步进电机的梯形加减速控制。原驱动已经比较完善,改动不大。

这就是我为什么D21x的片子依然跑RTOS而非Linux的原因,OS驱动完善的同时也可以当MCU用。

#192 Re: 工业芯 匠芯创 » RTOS SDK的Dynamic Module 添加C++编译选项失败 » 2024-08-08 13:24:34

这种开发方式除了C++支持问题,还有一个严重的限制就是不能在shell里查看app启动的线程,看来还是得放弃这种开发方式。

另外,发现即使是在SDK里写的app也不支持C++的iostream,只要一#include <iostream>就跑不起来。编译选项POSIX和C++支持均已选中。

#193 Re: 工业芯 匠芯创 » RTOS SDK的Dynamic Module 添加C++编译选项失败 » 2024-08-07 18:24:13

用nm工具看了下cpp源码编译生成的.o文件,C++运行环境似乎要以下这些符号,看来不好弄。

T _Z8cpp_testv
U _ZNSt8ios_base4InitC1Ev
U _ZNSt8ios_base4InitD1Ev
U _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l
U _ZSt4cout
b _ZStL8__ioinit

#194 工业芯 匠芯创 » RTOS SDK的Dynamic Module 添加C++编译选项失败 » 2024-08-07 18:01:19

海石生风
回复: 3

按照10.1. Dynamic Module 使用指南生成的aic-dm-apps默认编译及运行测试都没问题。

在尝试测试C++编译,添加C++编译选项时编译失败:

编译配置文件 aic-dm-apps/hello/SConscript 添加 CXXFLAGS

from building import *

src = Glob('*.c') + Glob('*.cpp')
cwd = GetCurrentDir()

CPPPATH = [cwd]
CXXFLAGS = ' -std=c++11'

group = DefineGroup('', src, depend = [''], CPPPATH=CPPPATH, CXXFLAGS=CXXFLAGS)

Return('group')

编译输出:

$ scons --app=hello
scons: Reading SConscript files ...
args.outfile:  /home/chenss/projects/test/source/luban-lite/partition_table.h
scons: done reading SConscript files.
scons: Building targets ...
CXX hello/cpp_test.o
riscv-none-embed-g++: error:  -std=c++11: No such file or directory
scons: *** [hello/cpp_test.o] Error 1
scons: building terminated because of errors.

#195 Re: 工业芯 匠芯创 » D2X怎么构建自己的工程? » 2024-08-02 15:33:40

更正一下,eclipse也可以使用上面所说的compile_commands.json文件,这其实是一个"Compilation Database"文件。配置方法如下图:
配置好了之后eclipse就能正确识别工程配置,并提供流畅的代码补全功能。

个人还是觉得eclispe比vs code好用点,目前vs code的git插件比eclipse的差太多了。
_20240802_153645.png

配置后展示
_20240802_153958.png_20240802_154026.png

#196 Re: 工业芯 匠芯创 » AWTK UI在D21x RTOS SDK平台上性能非常差,平移动画非常卡!什么原因? » 2024-07-31 22:30:10

ArtInChip 说:
xiaoxin7 说:
ArtInChip 说:

@海石生风

有几个方面的原因,我也不能说AWTK不好:
1. 新的SDK1.0.5对QT、LVGL更好。
2. 我们有新工具的计划


AWTK后续还会适配嘛?

个人角度出发,我比较喜欢用新工具。

你所说的新工具是指QD-Plus、inoneGUI这两?

稍微看了下,两个都是国内公司做的,都深受Windows影响,UI库里的API都透着浓浓的MFC的味道。

个人不看好(个人喜好)。

#197 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 单片机IO如何控制24V正输出? » 2024-07-28 17:25:54

20kΩ电阻和100nF电容的RC常数是2毫秒,且导通阻抗RDS在VGS(th)附近的变化是剧烈的,这对导通积热的影响可以忽略吧。
驱动容性负载导通时的瞬时电流超过最大漏极电流,这个风险是否可以忽略?
_20240728_172256.png

#198 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 单片机IO如何控制24V正输出? » 2024-07-28 15:23:58

xuqm 说:

@海石生风
开关时间变长,电压电流重叠区域变大,开通损耗变大,大到超过EAS,MOS会损坏,还有,有时候只考虑开通那一段忘了考虑关断那一段,那个是靠电阻上拉,如果阻值比较大,电容大了关断会很慢

假设这个说法成立的话,那么如果VGS一直等于或稍大于VGS(th),是不是也会损坏MOS?

#199 Re: 全志 SOC » V3s/S3/f1c100s通过USB启动Linux,并把SD NAND/TF卡挂载为U盘, 可以dd或Win32DiskImager任烧写 » 2024-07-28 12:26:13

提示出错的语句为f'{x}'语法,这是python3.6起才支持的语法,很可能反而是python3没有安装。

#200 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 单片机IO如何控制24V正输出? » 2024-07-28 10:16:00

saub 说:
海石生风 说:

PMOS开关电路,很常见呀。不过要注意VGS数值不要超过12V
https://whycan.com/files/members/1798/屏幕截图_20240722_122744.png

这个电路有问题,这个GS上并一个这么大的电容,这个PMOS大负载的时候分分钟烧掉

GS并联电容是为了减小驱动容性负载导通时的瞬时电流,使其不超过MOS管的最大漏极电流,起到保护作用。实在想不出哪里会烧掉。

页脚

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

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


太原小智科技有限责任公司 - 东莞哇酷科技有限公司联合开发