您尚未登录。

#1 Re: ESP32/ESP8266 » 打样了4次才搞定了esp32的天线 » 2020-07-13 11:33:57

是双层板?这样一圈大面积且无过孔到底层地的铺铜,有何意义?
双层板的地回路本来就难处理,现在最远端要绕一大圈跑天线附近才能回流,运气不好的话,这些铺铜还会产生“天线效应”。
没条件就近过孔和底层地形成回路的话,就干脆不要铺铜。否则,尽量等间距多打点过孔到底层地平面。

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

TivonLiu 说:

我想在RTT中,通过RTT提供的API,分配一片内存,这片内存不在cache的控制范围,这样使用这片内存就没有cache一致性的问题,我想问在RTT中有无这样的API?

你的需求似乎Cortex-M架构上的MPU模块能满足,通过定义一个连续的地址片为MPU_ACCESS_NOT_CACHEABLE来实现。
一旦定义后,也无需OS进行什么特殊操作,普通malloc即可。

但至于F1C100s的ARM926EJ-S内核,应该只有MMU可用,好像没有类似的功能。
还是要在驱动里手动调用诸如:mmu_invalidate_dcache()mmu_clean_dcache()等函数来操作cache。

总之,上述功能应该不是OS的API范畴,与CPU架构关系很大。具体可以参考RTT的libcpu/arm/arm926里的相关实现。

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

内存分配为啥需要cache safe?
在DMA开启写入和回取时,做cache失效标记不就行了?

#5 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 阻抗匹配 » 2020-01-20 09:48:44

50欧的输入阻抗,是射频采样ADC吧?只能用在前端是50欧特性阻抗的匹配电路。
需要对有源晶振的输出做阻抗匹配,加一级低噪放试试。看你的描述,应该就是阻抗不匹配的问题。
另外,注意下用的示波器哪个输入阻抗端,有1M欧和50欧的。

#6 Re: 8051/STC8/AT89C51/N76E003 » 请教N76E003单片机经常死机,怎么在看门狗中断打印死在什么地方? » 2020-01-18 14:31:17

1、在稳定良好的电磁环境下测试,先排除硬件干扰。

2、关狗,再一点点使用各种输出手段增加运行状态的输出,同时保证稳定复现故障。
     输出手段可以是串口打印、LED或IO特定频率的翻转;
     通过输出,至少应该能明确识别几个状态:复位、运行到业务逻辑的某个循环阶段。
     printf()有时候还真是万能的调试手段。

3、不要改变之前故障时的任何软件配置,保证故障复现率。接下去,就靠观察,看规律。

就算有野指针,也一定会在特定逻辑阶段后才出现,起码让你有个大致审核代码的范围。
特别注意下栈、堆的空间是否分配足够,不论是否用了RTOS,栈或堆的溢出故障导致的现象,有时候看起来会有点随机,尤其是程序需要与外部互动的时候。

上述操作的唯一目的,就是缩小排查范围,如果是软问题,知道了大致代码范围,仔细读几遍代码后,就等着拍大腿吧。

#7 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 阻抗匹配 » 2020-01-15 09:46:47

1、有源晶振是CMOS的输出吧,一般输出阻抗在37~100欧左右,视电源电压不同而不同。
2、ADC输入阻抗一般都不小啊,几十K欧的够用了。
3、问题出在这个所谓的信号源上吧,不是低阻输出就加缓冲器过渡,具体看什么信号吧,幅频要求不高的加一个普通运放就行。

#8 Re: 全志 SOC » 关于buildroot » 2020-01-09 12:48:52

cris8259 说:

就是说编译buildroot 和 app 用 buildroot生成的工具链,这样参数不会有问题,而编译BootLoader和kernel用buildroot生成的工具链或者其他工具链都行,是这个意思吗

你要混用外部工具链,就要做到兼容buildroot,参数包括:libc、eabi、fp等的设置。即,编译组织root文件系统的工具链和编译Kernel时用的工具链参数兼容。Kernel是需要配合root上的libc环境的,接口不兼容自然会影响相关依赖代码的执行。

#9 Re: 全志 SOC » 做了个全志H6的DDR4版本内存条板,HQPCB和捷多邦贴片。 » 2020-01-08 15:52:05

arychen 说:

PCBA其实只算成本不贵,贵在我们量不大哈,加上工程费等平摊下来就不便宜了。

就这点器件,0.65mm脚距的BGA,自己手工贴省事又省钱呀。钢网刷锡膏,加热板配热风枪一会儿就好了。

#10 Re: Openwrt/LEDE/AR9331/MT7688/RT5350 » 抓住一枚飞线狂人 » 2019-12-16 09:33:34

实在是精力太旺盛没地方用了,现在能打板绝不大规模飞线。搭上去的精力不划算,后期排错困难重重,真心不推荐这样的飞线。

#11 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » LittlevGL用VS2017进行PC仿真时 如何接收键盘事件 » 2019-12-06 16:38:10

lvgl在x86平台上用SDL库来实现的跨平台兼容,能接受的输入包括键盘、鼠标和鼠标滚轮,在例程里的main.c里就有,打开相应的条件编译开关就行了。
具体的处理逻辑在indev/keyboard.c里面实现,用keyboard_read()来提取键值。
main.c

    while(1) {
        /* Periodically call the lv_task handler.
         * It could be done in a timer interrupt or an OS task too.*/
        lv_task_handler();

        usleep(5 * 1000);       /*Just to let the system breath*/

        #ifdef SDL_APPLE
            SDL_Event event;
            
            while(SDL_PollEvent(&event)) {
                #if USE_MOUSE != 0
                    mouse_handler(&event);
                #endif

                #if USE_KEYBOARD
                    keyboard_handler(&event);
                #endif

                #if USE_MOUSEWHEEL != 0
                    mousewheel_handler(&event);
                #endif
            }
        #endif

    }

keyboard.c

bool keyboard_read(lv_indev_data_t * data)
{
    data->state = state;
    data->key = keycode_to_ascii(last_key);

    return false;       /*No more data to read so return false*/
}

void keyboard_handler(SDL_Event * event)
{
    /* We only care about SDL_KEYDOWN and SDL_KEYUP events */
    switch(event->type) {
        case SDL_KEYDOWN:                       /*Button press*/
            last_key = event->key.keysym.sym;   /*Save the pressed key*/
            state = LV_INDEV_STATE_PR;          /*Save the key is pressed now*/
            break;
        case SDL_KEYUP:                         /*Button release*/
            state = LV_INDEV_STATE_REL;         /*Save the key is released but keep the last key*/
            break;
        default:
            break;

    }
}

static uint32_t keycode_to_ascii(uint32_t sdl_key)
{
    /*Remap some key to LV_GROUP_KEY_... to manage groups*/
    switch(sdl_key) {
        case SDLK_RIGHT:
        case SDLK_KP_PLUS:
            return LV_GROUP_KEY_RIGHT;

        case SDLK_LEFT:
        case SDLK_KP_MINUS:
            return LV_GROUP_KEY_LEFT;

        case SDLK_UP:
            return LV_GROUP_KEY_UP;

        case SDLK_DOWN:
            return LV_GROUP_KEY_DOWN;

        case SDLK_ESCAPE:
            return LV_GROUP_KEY_ESC;

#ifdef  LV_GROUP_KEY_BACKSPACE        /*For backward compatibility*/
        case SDLK_BACKSPACE:
            return LV_GROUP_KEY_BACKSPACE;
#endif

#ifdef  LV_GROUP_KEY_DEL        /*For backward compatibility*/
        case SDLK_DELETE:
            return LV_GROUP_KEY_DEL;
#endif
        case SDLK_KP_ENTER:
        case '\r':
            return LV_GROUP_KEY_ENTER;

        default:
            return sdl_key;
    }
}

#12 Re: Qt/MSVC/MINGW/C++/MFC/GTK+/Delphi/BCB » 上位机开发,用哪个平台好啊? » 2019-12-04 10:37:08

需要界面的用Qt吧,pyQt也行。一劳永逸的事。按你的需求,拖几个控件能搞定。
控制台程序用python吧,上手快,基础库多。公司内部自用,对发布和部署的要求不高的,配置一次运行环境就行了。
活用bat脚本,作为壳把运行时环境一次性写死,再调用自己写的python模块,这样灵活度高。
就算是需要部署到unix系,再套个简单的shell脚本即可。

#13 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 我来推荐几个 AT modem 的 C 库给大家 » 2019-10-15 09:29:01

awfans 说:

ril 在单片机下面调用方便吗?

不能直接拿来用。需要RTOS的多线程支持,还需要把原来local socket的接口部分改成自己的上层调用接口(这部分是Android用来和上层Framework的事件循环通信的接口)。

但就AT客户端的抽象和底层协议处理来说,比较全面了,稍加改造即可利用。

#14 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 我来推荐几个 AT modem 的 C 库给大家 » 2019-10-14 08:14:34

awfans 说:
Zodiac 说:

建议看下Android源码里的,hardware/ril/reference-ril,很有参考价值。

是这个吗? https://github.com/mozilla-b2g/android-hardware-ril/tree/master/reference-ril

是的。建议直接去同步最新版看看,跟踪下变化:

https://android.googlesource.com/platform/hardware/ril/

#16 Re: RISC-V » 兆易创新发布RISC-V单片机,GD32VF103系列。 » 2019-09-01 08:35:44

jiangming1399 说:
Zodiac 说:

既然都是基于gnu工具链,试试Clion也可以啊。JetBrains家的IDE,素质都不错的。原生支持CMake构建,整合的GDB调试器,随意连Jlink,用着很舒服。

Clion要钱啊(

要钱也比MDK/IAR便宜啊。就算买JetBrains全家桶,用最高企业类授权,一年是649美刀一个工位,还不算每年的优惠活动和续订第三年及后续的直接对折。创业公司可申请5年对折优惠,对开源项目和教育机构直接免费。

MDK Pro现在是3800美刀一年一工位,还不算国内代理捆绑式销售按公司规模给你来个最低消费一次性买N个工位的这种手段。
IAR这位抢钱专业户就不说了。
这两平台要不是靠着自家的优化编译器撑台面,哪家公司还愿意每年大把大把的买授权啊。更不用说,他们这整整落后一代的编辑器,不怎么好用的构建系统,和对Win平台的绑定。

对绝大多数的嵌入式应用,GCC还真够用了。
配个顺手的跨平台IDE,用自己熟悉的构建系统(CMake或SCons,甚至是做成泛用模版的makefile),调试靠GDB,仿真跑QEMU,整体体验比MDK/IAR好。

现在MDK也像Altium一样,开始挨家挨户发律师函了,何不乘此机会换个更自由的开发环境?
况且,MDK平台的适用场景仅限RTOS,而基于GCC工具链的环境,换个编译器就能上Linux,无缝衔接。

#17 Re: RISC-V » 兆易创新发布RISC-V单片机,GD32VF103系列。 » 2019-08-31 08:34:00

Gentlepig 说:
超级萌新 说:

兆易厚积薄发,前期要忍受没有MDK/IAR JLINK的阵痛.

不过有网友说eclipse + openocd 更好用

不知道为何都用eclipse? 为何不在vscode下搞一套呢?打开速度比eclipse快。

vscode 的定制比eclipse麻烦(或者说,没eclipse下面来得自由)。
没有原生的构建系统,都是用插件搭的(或者说贴膏药凑的)。
C/C++的支持也是各种拼,搞得这工具定位很尴尬,上不上下不下的。
轻量不及Sublime Text,专业不及MDK/IAR。

既然都是基于gnu工具链,试试Clion也可以啊。JetBrains家的IDE,素质都不错的。原生支持CMake构建,整合的GDB调试器,随意连Jlink,用着很舒服。

#18 Re: Cortex M0/M3/M4/M7 » STM32H750VBT6 就是那个LQFP100的外扩SDRAM » 2019-08-18 14:38:26

STM32H750VBT6 不能挂SDRAM,FMC没有引出相应的控制脚,只有BGA封装的H750才能接SDRAM。
支持32bit总线的SDRAM,记得STM32的CM7系给SDRAM留了两个bank,每个256MB,可能最大是512MB?具体需要详查手册。
至于同时挂SDRAM和LCD,是支持的。
LCD可直接由LTDC驱动,或使用外接驱动芯片以SRAM的形式挂在FMC总线上。
从性能上考虑,优选LTDC方案。能最大限度利用内部总线带宽,从而支持更大分辨率的屏。

#19 Re: ST/STM8/STM8S/STM8L » STM32MP157芯片到手,板子走起 » 2019-07-05 11:28:34

这封装的生产成本不低吧:TFBGA - 361 ball, 12x12 mm, 0.5/0.65 mm pitch,要打激光过孔,走3.5mil的线了吧。

#20 Re: 全志 SOC » miyoo游戏机横版拆机 » 2019-06-29 11:25:35

miyoo这么大张旗鼓的,不怕被任天堂告侵权赔偿么?

#22 Re: VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT » 这两天京东618大促,想买计算机书籍的朋友现在就要动手了,过了这坎又要等一年 » 2019-06-18 09:51:05

宋宝华老师的书不推荐,不过他早期参与翻译的《精通Linux设备驱动程序开发》值得一读。
嵌入式linux这块,核心技术没怎么变,但新工具和内核驱动开发的新东西还是不少,主要侧重方法和实践,变化很快的东西没必要去啃过时的书。
618要囤的书,建议收《UNIX环境高级编程》之类的不容易过时的大部头。

比较推荐一些培训机构的讲义,https://bootlin.com/docs/
https://bootlin.com/doc/training/embedded-linux/
https://bootlin.com/doc/training/linux-kernel/
https://bootlin.com/doc/training/yocto/
https://bootlin.com/doc/training/buildroot/

配合动手实验,很快能入门。再要深入,内核源码会是更好的资源。

#23 Re: NB-IoT/2G模块/4G模块/GPRS模块/GPS/北斗 » 这个二手imu值得玩吗 » 2019-05-10 09:50:54

基础元件属于同一级别。看店家的拆解图:
- 加速计是飞思卡尔的MMA8451,3轴14bit;
- 地磁罗盘是霍尼韦尔的HMC5883L,3轴12bit;
- 还有一片QFN-20的丝印看不清。
- 板载STM32F205,在原始数据的基础上做了姿态融合的处理,用的什么算法不得而知,但肯定受限于cortex-m3的算力,要是F4系列可能更好。(搜索关键字,AHRS,mahony,卡尔曼滤波等)。

用模块的好处是,可以避免自己去研究算法,传感器矫正、甚至温度补偿这些很容易影响最终测量性能的坑。
当然,坏处就是不灵活,功耗、体积、算法优化等没法自己调整。

#24 Re: 全志 SOC » 有没有音频放大器推荐? » 2019-05-09 21:34:39

https://www.sunrom.com/p/m62429-digital-pot
可以参考下应用电路和代码。两线控制,用起来蛮方便。

#25 Re: 全志 SOC » 有没有音频放大器推荐? » 2019-05-09 21:31:29

调音量?带i2c控制的都不便宜,可以考虑外加数字电位器类型的方案,或者专用音量调节方案;如,三菱的M62429。这颗有很多国产货(如,无锡中微爱芯。关键字:M62429L或CD62429L),价格应该很美好。

#27 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » TouchGfx在Ubuntu16.04下基于SDL2编译和运行 » 2019-04-25 13:07:06

Touchgfx designer能跨平台就好了,lib库既然做了linux版,macOS也顺带能编译一份出来就更好了。

#28 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 要是linux的外设驱动可以做到用户层就好了 » 2019-03-27 21:06:33

这似乎不关“驱动是否要放用户态”的事吧?
BSP包完全可以独立出来开发的:device tree能单独编译,自定义的驱动能编译成内核模块,只在编译的时候借助下内核的构建系统。

楼主的需求是否只是想 “分清内核、驱动、应用之间的开发界限,降低互相间的耦合” ?

其实,内核对设备的抽象做了不少工作了,很大程度降低了应用层使用具体设备的复杂度。
应用通过统一的devfs、sysfs或者proc来与驱动进行交互。从结果来看,就是降低了应用与驱动之间的耦合。
楼主所提的 “提供一个统一、固定的平台给产品开发人员” 需求 ,只要保证 “同类设备,保持统一规范的devfs、sysfs、procfs的访问接口” ,即可满足。

楼主又提到 “应用启动时自己控制外设驱动的加载和on-chip驱动的加载,以及外设驱动和on-chip驱动的交互”,这只能是基于内核托管的情况下才能部分实现,还是以内核模块为单位的简单管理。更细粒度的管理,应用层 ‘不应’ 也不能直接去触碰。驱动涉及到的资源协调和配置都应该是OS一级去处理的事,而不是一个以进程为单位的APP该操心的事。

linux 把驱动拉到内核态,是为了最大化运行效率。qnx 为代表的微内核把驱动之类的做到用户态,是为了运行时的稳定而牺牲了运行效率。
这是个不同场景利弊取舍的事,也不能一下子分清哪种做法就一定是好的。
但不论驱动放在何处,其与应用层之间的接口保持统一和固定了,就能给开发人员提供一个稳定的开发环境。

#29 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » RTT的柿饼UI演示 » 2019-03-11 16:50:45

底层似乎基于原有的rt-gui,有独立的事件分发管理线程,基础图形直绘至fb。感觉还有很多地方需要改进完善,不单单是基础设备的抽象和优化,加入了上层UI设计软件后,还需要更完善的资源管理和运行时调度体系。
希望Bernard能对标隔壁ST家新收的TouchGFX。
免费的TouchGFX,结合STM32H750,这是个很大的威胁。
按器件性能的增长趋势和市场需求来看,以后的UI不再是简单切图能对付得了。

#33 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理? » 2019-02-13 08:48:27

在matplotlib-3.0.2版的代码里发现如下内容:
该库会自行搜索OS上可用的agg后端,次序为,
for candidate in ["macosx", "qt5agg", "qt4agg", "gtk3agg", "gtk3cairo", "tkagg", "wxagg", "agg", "cairo"]:
那么,只要ubuntu 14 安装了可用的UIagg的库,似乎就能解决问题。

源码位于:https://pypi.org/project/matplotlib/#files

 
# Line892 @matplotlib/_init_.py
class RcParams(MutableMapping, dict):
    ...
    def __getitem__(self, key):
        ...
       elif key == "backend":
            val = dict.__getitem__(self, key)
            if val is rcsetup._auto_backend_sentinel:
                from matplotlib import pyplot as plt
                plt.switch_backend(rcsetup._auto_backend_sentinel)
# Line177 @matplotlib/pyplot.py
def switch_backend(newbackend):
    """
    Close all open figures and set the Matplotlib backend.

    The argument is case-insensitive.  Switching to an interactive backend is
    possible only if no event loop for another interactive backend has started.
    Switching to and from non-interactive backends is always possible.

    Parameters
    ----------
    newbackend : str
        The name of the backend to use.
    """
    close("all")

    if newbackend is rcsetup._auto_backend_sentinel:
        for candidate in ["macosx", "qt5agg", "qt4agg", "gtk3agg", "gtk3cairo",
                          "tkagg", "wxagg", "agg", "cairo"]:
            try:
                switch_backend(candidate)
            except ImportError:
                continue
            else:
                rcParamsOrig['backend'] = candidate
                return
    ....

#34 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » mobaxterm ssh登录 vps, 运行littlevgl的模拟器, 终端居然能显示模拟器窗口, 请教是什么原理? » 2019-02-13 08:25:01

一套py代码在不同OS版本上表现不同,多数是OS环境差异引起的。
从问题log来看,已经提示ubuntu 14的环境上,导入的matplotlib用了agg才出的问题。然而,该后端的确只支持写入文件,不支持屏幕绘制。
由此,估计问题是出在OS上,没有可用UI版本的agg。例如:Qt5Agg Qt4Agg Gtk3Agg GTK3Cairo TkAgg WxAgg。
或者是,部署matplotlib时默认为agg;需要导入后手动由代码指定一个可用UI的agg(前提:OS环境必须有相关lib)。

相关py调用,例如:matplotlib.use('GTK')

参考:
https://matplotlib.org/faq/usage_faq.html#what-is-a-backend
https://stackoverflow.com/questions/4930524/how-can-i-set-the-backend-in-matplotlib-in-python

#36 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » LittlevGL的Python绑定(非micropython) » 2019-01-15 18:28:23

Zodiac
回复: 4

https://github.com/rreilink/pylvgl

又一个lvgl的python绑定,只可惜目前仅支持到 v5.1.1 版。与最新版相比,少了一些绘图模块。
可以拿来作为熟悉API和快速设计界面的一个工具。
使用效果与mpy版相同。

使用步骤:

1、下载
    git clone --recurse-submodules https://github.com/rreilink/pylvgl.git

2、按需修改分辨率
    lv_conf.h:LV_HOR_RES,LV_VER_RES

3、生成扩展模块

$ python3 ./setup.py

4、安装PyQt5

$ pip3 install PyQt5

5、进入python交互界面,导入模块,开始体验。

$ python3
Python 3.6.5 (default, May  9 2018, 10:02:20) 
[GCC 4.2.1 Compatible Apple LLVM 9.1.0 (clang-902.0.39.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> from pylvgl import Demo, lvgl
>>> d = Demo()
>>>
>>> b1 = lvgl.Btn(lvgl.scr_act())        
>>> b1.set_size(200,50)
>>> b1.align(b1.get_parent(), lvgl.ALIGN_IN_LEFT_MID, 0, 0)
>>>
>>> l1 = lvgl.Label(b1)
>>> l1.set_text('LittlevGL')
>>>
>>> lm = lvgl.Lmeter(lvgl.scr_act())
>>> lm.align(cal.get_parent(), lvgl.ALIGN_IN_LEFT_MID, 300, 0)
>>> lm.set_range(0,100)
>>> lm.set_value(10)
>>>
>>> style_lm1.line_width = 4
>>> style_lm1.body_main_color = 0x2200
>>> style_lm1.body_grad_color = 0x0022
>>> lm.set_style(style_lm1)
>>>
>>> lb2 = lvgl.Label(lm)
>>> lb2.set_text('10%')
>>> lb2.align(lm, lvgl.ALIGN_CENTER, 0, 0)

-2019-01-15-5_52_10.png

附:
步骤5中所导入的辅助模版,另存为pylvgl.py,放在工程目录。

import lvgl
from PyQt5 import QtGui, QtWidgets, QtCore

class LvglWindow(QtWidgets.QLabel):
    def __init__(self):
        super().__init__()
        self.setMinimumSize(lvgl.HOR_RES, lvgl.VER_RES)
        self.setMaximumSize(lvgl.HOR_RES, lvgl.VER_RES)
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.update)
        self.timer.start(10)

    def mousePressEvent(self, evt):
        self.mouseMoveEvent(evt)
    def mouseReleaseEvent(self, evt):
        self.mouseMoveEvent(evt)
    def mouseMoveEvent(self, evt):
        pos = evt.pos()
        lvgl.send_mouse_event(pos.x(), pos.y(), evt.buttons() & QtCore.Qt.LeftButton)
    def update(self):
        # Poll lvgl and display the framebuffer
        for i in range(10):
            lvgl.poll()
    
        data = bytes(lvgl.framebuffer)
        img = QtGui.QImage(data, lvgl.HOR_RES, lvgl.VER_RES, QtGui.QImage.Format_RGB16) 
        pm = QtGui.QPixmap.fromImage(img)
        
        self.setPixmap(pm)

class Demo():
    def __init__(self):
        self.app = QtWidgets.QApplication([])
        self.window = LvglWindow();
        self.window.show()
    def run(self):
        self.app.exec_()

补充:
该工程使用bindingsgen.py和sourceparser.py两个自定义工具,及lvglmodule_template.c模版,自动解析lvgl源码并生成编译扩展模块所需的接口代码,即lvglmodule.c。
上述工具基于pycparser模块,且根据lvgl定制,与API版本关联,目前支持到v5.1.1。
有兴趣的朋友,可以尝试自行编译。

 $ pip3 install pycparser
 $ python3 ./bindingsgen.py

#38 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 第一次体验 JLC 嘉立创 SMT » 2019-01-08 09:24:11

对于脚间距大的BGA,比如0.8mm的,可以钢网开孔,刷低温锡,降低温度要求,这样成功率比较高。极小间距的,焊接工具温控够好的话,可以直接用芯片上的无铅锡球;如有必要,可以重新植球,换低温的。反正试制板,怎么方便怎么来。

#39 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » zlg开源GUI------awtk » 2019-01-06 17:39:59

最近各种嵌入式GUI大爆发啊。隔壁rt-thread刚发布了“柿饼”,支持JavaScript动态页面;并入ST家的TouchGFX不知道在憋什么大招;QT也有下沉低端市场的节奏。真是热闹啊,不知谁能笑到最后。

#40 Re: DIY/综合/Arduino/写字机/3D打印机/智能小车/平衡车/四轴飞行/MQTT/物联网 » 第一次体验 JLC 嘉立创 SMT » 2019-01-06 17:03:11

posystorage 说:
playflash 说:

我听了论坛一兄弟建议,  做个25元的钢网, 自己手工贴,也很快。0603的阻容基本没问题,0402就有点麻烦。

同问25元的钢网哪里有做?

25元?够便宜的,哪里有得做哦?质量如何?

看楼主的贴片效果,JLC如果能贴全,加点钱也划算。估计是他们家目前定制成本下不来的关系,只能提供些常见类型的器件服务。

目前,还是做个钢网,自己手工贴,来的效果好点。一块恒温加热板,一把热风枪,刮低温锡浆,完全能对付BGA和0402。要是有定位精度好一点的丝印台,0201的一次成品率也会很好。

#41 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 国产LearningGUI简介 » 2018-11-28 22:14:25

达克罗德 说:

关注GUI开发。个人认为win32 api式的GUI开发模式太老了。现在硬件越来越强大,趋势是CSS/XML/JSON+JS/LUA/PYTHON/HTML5开发模式

http://blog.qt.io/cn/2018/08/15/qt_on_microcontrollers_mcu/
QT已经开始尝试向低端平台拓展了,其中就包括QML模块。不知道是否会做进一步的优化,对于Cortex-M4/7平台来说,还是有点臃肿。还是很期待啊,QT生态圈的诱惑力还是很大的。

#42 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 有什么比较好的嵌入式操作系统,实现了标准文件系统和网络 » 2018-11-28 21:19:57

sindy 说:

RTT 貌似也是posix接口了,但是授权一样很麻烦。

RTT 从v3.1.1开始,已经全面改用Apache Licence 2.0了!

页脚

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

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