您尚未登录。

#1 Re: ESP32/ESP8266 » 新玩具:AIC8800M80,支持20/40/80M带宽的wifi MCU » 2024-03-08 11:03:49

vsf
thindcna 说:

它的数据表在哪里?

datasheet官方不公开,SDK也是需要签NDA才能拿到的。
所以,我们才去对接linux的开发方式,可以不需要SDK,直接编译可执行文件,打包安装运行,XIP elfloader的方式。
网络就是socket和wifi相关的命令行、USB主机就是libusb、外设就是各种文件操作、显示器可以framebuffer增加了pfd支持、音频可以用alsa、USB设备后面会对接usb gadget、自启动就用/root/.profile、前面的webterminal就是用pty伪终端、等等linux的玩法都会支持。

#2 Re: ESP32/ESP8266 » 新玩具:AIC8800M80,支持20/40/80M带宽的wifi MCU » 2024-03-08 11:02:25

vsf
微凉VeiLiang 说:

好几款芯片后缀价格差别比较大,有什么区别呢

AIC8800M后缀的都是可以当作MCU使用的,AIC8800D后缀的都是当作网卡使用的。
AIC8800M是老的型号,AIC8800MBPW是老型号内置4M字节psram。老型号是2M字节flash,用户可用ram几百KB。
AIC8800M40B是新的型号20/40M wifi,AIC8800M80是新的型号内置20/40/80M wifi。老型号是4M字节flash,用户可用ram比老型号少一些。

#3 ESP32/ESP8266 » 新玩具:AIC8800M80,支持20/40/80M带宽的wifi MCU » 2024-03-07 16:45:47

vsf
回复: 5

之前尝试的linux开发方式,基本也有一定成熟度了,参考链接

目前主推的开发方式,已经完全兼容linux的玩法了,并且可以合法使用GPL的软件
包管理器,各种原版软件(busybox、curl等等)
直接使用手机控制和配置


惯例先秀一下开发板
vsfboard_aic8800m40_1.JPG.jpgvsfboard_aic8800m40.JPG.jpgvsfboard_aic8800m40_2.JPG.jpg

由于芯片的SDK并不是公开的,如果需要编译固件的话,需要公司名字,然后和芯片原厂签NDA,拿到SDK后,加入代码仓库,可以编译固件。
没有SDK的话,可以编译成动态加载的可执行程序,打包后可以使用包管理器安装。
可以通过"echo COMMAND >> /root/.profile"加入到启动脚本里。

开发板介绍视频

支持webterminal,可以通过网页来用命令行配置管理,支持linux/windows/macos/android/ios/鸿蒙
AIC8800M80.webterminal.png

支持原版busybox,虽然并不推荐,因为会占用较多的ram
AIC8800M80.webterminal.busybox.png
使用vi编辑/root/.profile启动脚本
AIC8800M80.webterminal.busybox.vi.png

应用开发方式视频,GPL开源协议的代码,必须编译打包为软件包,这样内核代码可以不受GPL协议传染。

#4 Re: 上海航芯 » ACM32FP401大概什么时候出来?想玩玩 » 2023-07-20 14:15:19

vsf
fxyc87 说:

现在还有人玩QQ?我的QQ至少6年没登过了,QQ群也自行发展,没管过了。

这个我也没办法,扫码新航主页里的微信公开号,发给我的消息里,就只有QQ群,而且加了也没反应。

#5 上海航芯 » ACM32FP401大概什么时候出来?想玩玩 » 2023-07-20 01:54:50

vsf
回复: 3

如题

另外,貌似航芯的QQ群无法加入?貌似申请了都没结果

#6 ESP32/ESP8266 » VSF + AIC8800M wifi bt soc,动态应用加载,elf格式XIP » 2022-08-07 01:18:44

vsf
回复: 1

最近尝试了一下wifi/bt soc上,动态加载用户应用的方式。又学到很多没用的知识。

0. 基本需求
0) 应用需要方便编译,使用比较通用的格式
    elf:还有谁?
1) 应用代码部分最好不占用ram,XIP方式运行
    elf: 呃呃呃,你再说一遍?
2) 用户开发简单,和普通的c一样,甚至可以用其他语言,rust、go等等,反正能编译成elf就行
    elf: smile
3) 支持cortex-m等MCU芯片
    cortex-m: 纳尼
4) 全兼容,基于新版本编译的同样代码,可以在旧版中使用,反过来也一样

1. elf动态加载、地址无关、cortex-m
0) gcc编译器使用-fPIC,产生的是got-based position independency。
    科普:GOT,Global Offset Table,说白了就是一个存放变量和函数的地址数组,在ram中,用户可以在GOT里实现重定位
    优点:随便乱来,反正地址都是loader决定
    缺点:arm-none-eabi-gcc有BUG,产生基于R9寄存器的GOT代码的时候,PLT(不用明白,反正就是一些代码,用于调用一些内/外部函数等等)里的代码访问GOT还是用PC+偏移,不是用R9寄存器。并且,已知这个BUG好几年前就有,ARM也不会去修复这个BUG。
1) clang/iar编译器使用-fropi -frwpi,mdk估计也是这个,产生的是embedded position independency。
    优点: 简单,R9只是指向data/bss/noinit的整块内存,不需要重定向
    缺点: 由于没有重定向,所以无法访问外部函数,因为没有从定向操作,也不能对外提供API
    workaround: VSF黑科技,自己实现PLT(支持动态库)

2. 最终方案
0) 使用clang编译器编译elf,ARM今后主力支持这个,反正也免费
1) VSF host程序下的配置:
VSF_USE_LOADER                      使能加载器
VSF_LOADER_USE_ELF               支持elf加载器
VSF_LINUX_USE_APPLET            linux子系统,支持applet(高大上的说法,其实就只是编译出来的elf)
VSF_LINUX_APPLET_USE_XXXX  linux下哪些头文件支持在applet里使用
2) VSF applet下的配置
直接用vsf.linux仓库下,applet/vsf_usr_cfg.h: https://gitee.com/vsf-linux/vsf.linux/blob/main/applet/vsf_usr_cfg.h
3) applet应用开发
头文件(包括C库头文件,位于simple_libc下): https://gitee.com/vsfteam/vsf/tree/master/source/shell/sys/linux/include
直接使用linux的方式开发,如果再linux下可以用,按照applet目录下的编译命令,编译后就可以在vsf里使用。
使用方法,下载到AIC8800M的内部flash中,然后,vsf的linux里,运行loaderelf 0xXXXXXXXX(flash中的地址)。

上图:
vsf_applet.png

#7 Re: ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-07-04 21:40:29

vsf
村民 说:
vsf 说:

quickjs + MEUI -- 使用react或者preact开发UI应用
https://whycan.com/files/members/3294/meui.png

话说这种用js开发的应用,怎么保证代码的安全性呢?

脚本开发的话,估计很难保证代码的安全性,即使使用quickjs的bytecode的话,也都是公开的。
js一般也只是用于对接前端的UI开发,不过这个也就只是在PC上玩玩,MCU里的资源和性能不够玩这套

#9 Re: ESP32/ESP8266 » VSF linux应用移植系列 -- libuvc(一)初步移植 » 2022-06-28 22:16:46

vsf
kekemuyu 说:

vsf还是走自己的应用路线吧,移植linux应用想扩大生态是徒劳的。我能在linux上跑,为什么还需要vsf呢?

这个就是VSF的路线,如果你都直接用linux了,那没必要上VSF,多此一举。
VSF里用linux的应用代码,目前已经有几个项目在出货了,这个是因为项目需求才做的(客户给钱了,我们就开发),只是现在才开始推而已。其实,早在几年前就做了这个,在我们自己的项目里用的,之后还移植到ESP32里:https://whycan.com/t_5718.html
一般是在wifi soc上用的,这些芯片里,跑原版linux代价太大,而且都不一定可以跑得动的。

wifi soc里的使用,参考这里:https://whycan.com/t_8363.html

#10 Re: ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-06-23 16:51:04

vsf
musich 说:

这个相当NB,  2.4/5G  双频的,  还有IAR. 

发射功率不知有多大,  要是有+20dBm 就完美了.

我看到文档里有这个参数:
RX sensitivity -98dBm in 11b 1M mode
Tx power up to 20dBm in 11b mode, 18dBm in HT/VHT/HE40 MCS7 mode

#11 Re: ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-06-22 15:17:42

vsf
musich 说:

M4F内核,主频是480MHz吗?这就厉害了。

DSP是480M,不过确实也是M4F的内核。只是使用上有一些限制,代码和ram必须在一个特定的ram block里。

#12 ESP32/ESP8266 » VSF linux应用移植系列 -- libuvc(一)初步移植 » 2022-06-20 14:16:37

vsf
回复: 2

libuvc是基于libusb的USB UVC(USB Video Class)驱动,VSF系统具备完善的fd事件机制(libuvc需要),也支持相对完整的libusb库。所以移植libuvc相对而言,应该会比较简单。

VSF以及linux子系统,参考:https://whycan.com/t_8363.html

按照移植步骤的话,第一步是在linux下编译libuvc,使用自动生成的libuvc_config.h:
<code>
#ifndef LIBUVC_CONFIG_H
#define LIBUVC_CONFIG_H

#define LIBUVC_VERSION_MAJOR 0
#define LIBUVC_VERSION_MINOR 0
#define LIBUVC_VERSION_PATCH 6
#define LIBUVC_VERSION_STR "0.0.6"
#define LIBUVC_VERSION_INT                      \
  ((0 << 16) |             \
   (0 << 8) |              \
   (6))

/** @brief Test whether libuvc is new enough
* This macro evaluates true if and only if the current version is
* at least as new as the version specified.
*/
#define LIBUVC_VERSION_GTE(major, minor, patch)                         \
  (LIBUVC_VERSION_INT >= (((major) << 16) | ((minor) << 8) | (patch)))

/* #undef LIBUVC_HAS_JPEG */

#endif // !def(LIBUVC_CONFIG_H)
</code>

第二部,建立visual studio测试工程,从vsf.linux/project/vc拷贝一份到vc_libuvc。
在工程里,加入libuvc的源码:
libuvc_proj.png
加入包含路径:
libuvc_include.png
其中,libuvc\raw是libuvc目录。libuvc\port是libuvc的移植目录,里面存放linux下编译libuvc时自动生成的libuvc_config.h(按照linux下编译libuvc生成的目录结构)。
宏配置,使能APP_USE_LIBUVC_DEMO:
libuvc_macro.png
libuvc的main入口修改:
libuvc_entry.png
linux fhs里,安装libuvc demo(在vsf_main.c中的vsf_linux_create_fhs函数):
libuvc_exe.png
这里就是绑定uvc可执行文件为uvc_main(之前的libuvc example的入口)。

第三部,编译
提示错误:
1. frame-mjpeg.c里,jpeglib.h头文件没找到。
不支持mjpeg,frame_mjpeg.c不参与编译。
libuvc_exclude_mjpeg.png
2. 一些库函数冲突,看了一下,是因为包含了windows的头文件,在libuvc_config.h中加入如下内容:
libuvc_config.png

第四部,资源优化
既然在windows上移植,暂时不需要优化,先跑通功能。

第五步,动态加载
暂不考虑,先跑通功能。

额外的异步,windows下的winusb驱动,需要定义具体设备ID,修改vsf_usr_cfg_win.h:
libuvc_winusb_config.png
这里使用的UVC摄像头的PID/VID就是04F2/B130。
windows上,需要用zadig为这个摄像头安装winusb驱动。

摄像头接入PC后,编译运行:
libuvc_connect.png
这里的提示,就是UVC摄像头已经识别,使用了libusb的驱动。

运行demo(命令行输入uvc,按回车):
libuvc_run.png
libuvc_run_error.png
UVC识别OK,不过后面有运行错误,IO Error,libuvc开源的,所以可以简单调试一下。

调试发现,是如下位置出错:
libuvc_ioerr.png

上USB协议分析仪,截取报文:
libuvc_usb.png
看错误,是UVC摄像头的问题,几个UVC的标准请求没有响应。

等新的UVC摄像头,到了之后再测试。

#13 Re: ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-06-19 15:29:10

vsf
村民 说:

已去店铺买开发板

好的,淘宝里搜索AIC8800M,开发板应该只此一家。
周一上班后就安排发货

#14 Re: ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-06-17 13:51:34

vsf
哇酷小二 说:

感谢楼主分享,QQ群直接贴出来就好了。

好的,多谢。
因为有一些论坛是有限制的,不知道whycan这里有啥限制,我也不想违反版规。

#15 ESP32/ESP8266 » 终于发布:VSF + AIC8800M,使用linux的方式开发使用wifi soc » 2022-06-17 13:26:20

vsf
回复: 13

本帖是系列贴,先是简单介绍一下,之后会有一些好玩的应用发布,不过基本也都只是基于我们的linux子系统,跑一些现成的linux应用代码,不过会把应用移植的来龙去脉讲了更加详细,平台可能是x86、STM32H743、全志D1、AIC8800M。

1年半之前,还是计划用ESP32来实现,不过由于没有任何技术支持,github里提issue也是半年后才有回复,所以就放弃了,ESP32的支持也一直没发布。
不过,这两年国产的wifi soc还是挺多的,我们评估过的也有好几家了,后来换了另外一家爱科微的AIC8800M。
实际使用下来还是不错的。虽然芯片文档还是比较缺,但有问题找原厂基本都很快会有回复,所以也比较顺利的搞定了,已经有几个项目量产了。

这里先简单介绍一下VSF和AIC8800M

VSF:
1. 事件驱动内核,从51支持到x64,还可以支持wasm,可以运行在RTOS的线程里,也可以运行在中断里。
2. 统一的应用开发方式,可以在PC上,用visual studio开发调试好应用之后,放在MCU的环境里编译使用。
3. 各种功能组件
4. 模拟其他OS,比如模拟成linux,直接使用一些Linux的应用代码

爱科微 AIC8800M:
1. 双频(2.4G/5G)Wifi6 + 双模(EDR/BLE)BT5
2. CortexM4F 240M 992K字节 sram 2M字节 flash,并且有型号内置4M字节psram
3. 480M主频 DSP
4. 1路 60MHz SPI,1路 I2C主,3路 UART,1路 USB OTG内置高速PHY,1路SDIO 主/从,I2S音频(AIC8800A内置codec),ADC,PWM。。。。
5. 5x5 QFN




我们之前评估了几家国产的wifi soc,开发基本都是FreeRTOS + lwip。不过esp-edf算是特例,虽然直接使用一些linux的应用会有一些问题,但是可以使用很多linux的API来开发,这个算是非常超前的了。结合我们自己的一些应用尝试,发现用linux的方式来开发wifi soc确实会非常方便,有很多现成的资源可以使用,仅仅需要注意,如果在产品上使用的话,尽量使用一些非GPL许可的软件,比如libcurl、libsdl啥的。也问过一些用户,感觉wifi soc里用linux的方式开发,可能是一个趋势。

VSF经过了一段时间的开发维护,也加入了linux子系统,并且已经具备一定的兼容性,可以直接编译一些linux的应用,我们也做了一些库的移植,比如libcurl等等。VSF里的linux子系统使用按需开发的方式,毕竟linux系统需要的API太多,实际使用的时候,如果缺什么API,我们会尽量补上。当然,由于芯片没有MMU,所以有一些依赖MMU的API无法实现,比如fork,需要用spawn替代。一些维护了比较好的linux软件,基本都有HAVE_FORK/HAVE_VFORK/HAVE_WORKING_FORK等等的配置,所以可能只是配置一下就行。

如果买了AIC8800M开发板的用户,淘宝里有群号直接加群就行。
有兴趣的话,可以加群:736714326(注明AIC8800M,或者算一道题),手动屏蔽,不知道本论坛是否可以放联系方式

举个栗子,使用linux里的curl来实现一些网络相关的功能,或者可以用其他其他基于libcurl的网络应用:
curl.png



下面上正文了,一些技术的实现方式。

1. 先上一个巨坑:实现linux子系统的话,第一个问题,C库以及c++库。
在linux上,c++库是基于底层的linux提供的各种API实现的,但是在MCU里,编译器会自带一些C库。这里就看编译器自带的C库的retarget能力了,首先点赞的是IAR,自带的C库可以直接使用,通过retarget可以对接到linux子系统里的API,唯一的限制是open的返回fd是int8_t类型的,不是标准的int类型的。newlib必须差评,这个库基本没怎么考虑嵌入式的应用场景,所以很多开源的软件框架(比如xboot),自己做了c库,就是这个原因。VSF也自己实现了C库,可以通过配置来选择是否使用,并且,还可以使能C库API的wrapper,避免和编译器自带的库冲突。

C++库,必须先呵呵。

很多开源软件框架,即使实现了C库,也不一定对接了c++,这里是巨坑。。巨巨坑。。。巨巨巨坑。。。

不过,VSF会尝试解决这些问题,目前在Visual Studio的clang以及arm-none-eabi-g++下,已经可以编译一些C++的代码。不过还有一些静态实例初始化的问题,已经知道解决方法,还好目前用的一些C++应用,还不受这个影响。这里先留个TBD,等后面处理好后,我再补充。
[我就是TBD]

另外,后面还会尝试使用musl,这个是基于posix的C库。

2. linux的进程、线程对接
大部分RTOS下,其实没有进程的概念,都是线程,进程也只是模拟出来的,VSF也是一样。并且,vsf的linux子系统支持很多相关的功能,例如线程本地存储(TLS,pthread_key基于tls)等等。也哟很多相关的API,比如直接使用sytem函数来启动一个进程,执行一个命令,这些都和linux的完全兼容,并且linux的signal机制也支持。

3. 文件系统 fd,网络 socket,v4l2的设备等等
linux下,一些皆文件,所以也需要设计一个相对完善的linux下的fd对接机制,并且支持相关的各个功能,比如select/poll(状态触发,边沿触发,POLLIN/POLLOUT...)等等。socket、named pipe、v4l2等等,都是通过这个fd机制对接的,甚至可执行程序的入口也是这么对接的。

4. 各种常用库,比如getopt、libusb、sdl、libcurl等等
有些库是自己实现,比如libusb,为了节省资源占用,按照libusb的接口完全自己重写了一套。有些是直接使用linux里的代码或者一些其他开源软件,比如getopt、libsdl2和libcurl,一般这类代码的设计的时候,已经考虑了可重入,直接用就行了。




如果要移植一些linux的代码,步骤如下:
1. 在实际linux下编译一下,目的是为了生成一些配置文件
2. 基于Linux下生成的配置文件,做一些修改(一般就是直接编译,然后看是否有报错,比如缺啥API等等,再修改配置文件)
    都是一些类似HAVE_FORK,HAVE_STDLIB_H之类的配置
3. 如果在windows下编译的话,编译器会默认定义_WIN32、_MSC_VER之类的,这个可能会使得代码包含一些windows的头文件。需要在相关代码里,#undef _WIN32、#undef _MSC_VER等等
4. linux的很多应用不考虑资源使用,可能会需要修改一部分应用代码。比如,之前移植的一个应用,直接在stack上分配128K内存,这类问题只能修改代码了。
5. XIP模式下,实现动态加载
    这个部分挺麻烦,不过并不是所有的软件都会需要修改。linux的应用软件启动后,会加载软件的资源,初始化一些内存等等。但是MCU里,往往没有这个资源做动态加载。VSF通过另外一种方式来实现这个过程(程序还是在flash里,ram重新生成一份示例),git的移植就是必须要支持动态加载,因为git会在内部再次调用git,所以会需要多个git的实例。有这个需求的用户,加群咨询。
6. VSF里的代码补充完整,如果有些API功能不完善,或者缺什么API的话,VSF团队会负责增加维护



已经移植/测试过的一些软件(不完整列表):
1. ncurses
2. git
3. curl
4. less
5. quickjs
6. sdl2
7. wamr
8. xfel
9. openocd
......



AIC8800M开发用户进群后,群公告里有上手说明的连接。
其他用户想玩一下的话,可以用windows下的visual studio工程,推荐最新的Visual Studio 2022。

仓库:
https://github.com/vsf-linux/vsf.linux
https://gitee.com/vsf-linux/vsf.linux

clone所有子仓库后,vsf里也有一些子仓库需要clone,后续会提供repo的管理方式。
注意,如果是用gitee的话,8086tiny仓库不要clone,因为gitee不支持数字开头的仓库。
vsf里需要的子仓库:PLOOC、freetype、libpng、lua、zlib、SDL_image、SDL_mixer、SDL_net、SDL_ttf
直接用project/vc_sdl2来测试。
Visual Studio需要安装:使用C++的桌面开发、通用Windows平台开发、适用于v143生成工具的C++ Clang、适用于Windows的C++ Clang编译器

公开的应用移植,仅仅是用于测试VSF里的Linux子系统的兼容性,没有太多实用价值。
不过,会有一些应用,我们后面会尝试放到嵌入的环境里跑一下,大部分C语言的应用直接可以用,只要嵌入式环境的性能和资源足够。
一些c++的代码,等我们对接了g++的库之后,也应该是直接可以用的,不过可能会针对实际的嵌入式环境,做一些优化。

DUNGEON_RUSH:
dungeon_rush.png
sdlpal:
sdlpal.png
git:
git_20220617-1923.png
xfel & openocd:
xfel_openocd.png


购买地址:
https://item.taobao.com/item.htm?id=676758017780
https://item.taobao.com/item.htm?id=676868663805

whycan首发,可以随意转载,只需注明出自VSFteam即可。

#16 Re: ESP32/ESP8266 » 用linux的方式,开发wifi soc固件 » 2022-03-22 11:04:19

vsf

开发板天线参数确定,估计等最近疫情解封后就可以玩了
vsf_curl.png

上图是在wifi芯片里运行curl,最后还有一个错误要修复,-14是lwip的ERR_RST。
应用代码完全一样,仅仅是如果使用iar的话,要改一个声明,因为iar的c库里,fd类型不是int的。

最近一个应用,直接system("curl .... | parse_reply");类似的方式,就搞定了。用起来还是非常方便的

#17 Re: ESP32/ESP8266 » 用linux的方式,开发wifi soc固件 » 2022-02-27 23:54:57

vsf
sblpp 说:

vsf 大佬牛x!
求资料求开源~

测试硬件明天到,调试OK的话,估计就一起发布了

#18 ESP32/ESP8266 » 用linux的方式,开发wifi soc固件 » 2022-02-27 15:29:42

vsf
回复: 4

2020年底,在esp32s2上尝试过,帖子在这里: https://whycan.com/t_5718.html
不过,idf的环境,加入的文件过多的话,链接阶段会有错误,给官方提了issue也是年半之后才答复( https://github.com/espressif/esp-idf/issues/6061 ),半年后项目都黄了。

现在换了另外一个wifi芯片,整套系统基本跑起来了,linux的核心的话,需要在源系统的基础上,增加20-30KB的代码占用(CortexM4)。对于上M字节的wifi芯片,貌似只是小水水。
而且,开发的时候,可以直接使用Visual Studio(支持x86和x64),开发调试完成后,再放到MCU环境里编译。

秀一些操作:
1. curl测试REST API
rest_api.png


2. git clone
git.png


3. telnetd
telnetd.png

#20 Re: ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-30 00:34:54

vsf
iki1120 说:

接近1M sram,这太富裕了吧

我应该还没说有型号还内置了32M字节的内置psram吧?
不过psram的性能也不知道咋样,不知道直接跑个linux会咋样

#21 Re: ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-29 22:52:02

vsf

先放出一些已经搞定的东西,继续筹划一下硬件

#22 Re: ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-29 22:51:24

vsf

VSF已经支持了AIC8800,并且正在逐步完善各个外设驱动。已经拿到开发板的童鞋,可以先看一下下面的步骤。

零、芯片简介
1. 240M CortexM4F内核,2M字节flash,992K字节sram
2. 双频WIFI6,286.8Mbps@TX,229.4Mbps@RX
3. 双模BT5
4. 硬件加速引擎,AES/RSA/HASH/ECC
5. USB 2.0 OTG内置高速PHY
6. 内置PMU
7. 5x5 QFN48
8. UART/SPI/I2C/SDIO etc
9. 各种未公开特性,欢迎来撩

一、准备
软件:
1. 编译器,以及开发相关的工具
WIndows下:IAR EWARM 8.40 或者 arm-none-eabi-gcc + cmake + ninja + openocd + vscode
Linux下:arm-none-eabi-gcc, cmake, ninja, openocd, vscode
2. 串口中断,需要支持xmodem发送固件
3. git工具,比如wingit + tortoise git
4. 调试相关的软件,比如openocd。如果使用jlink/dap等IDE已经支持的调试器的话,则不需要额外调试软件。

硬件工具:
1. AIC8800M开发板
2. USB转串口
3. jlink或者cmsis-dap等SWD调试工具

二、下载VSF
可以下载vsf,更新submodule。也可以直接下载vsf-all-in-one。下载好的一些第三方代码,需要打补丁。

1) 使用GIT工具下载VSF,并且更新submodule:
https://github.com/vsfteam/vsf.git
https://gitee.com/vsfos/vsf.git
目前的工程,需要如下子模块(也可以下载所有子模块):
1. source/hal/driver/AIC/AIC8800/vendor
2. source/utilities/compiler/arm/3rd-party/CMSIS
3. source/utilities/3rd-party/PLOOC/raw
4. source/component/3rd-party/mbedtls/raw
5. source/component/3rd-party/btstack/raw
6. source/component/3rd-party/lvgl/raw/lvgl
7. source/component/3rd-party/freetype/raw
8. source/component/3rd-party/zlib/raw
9. source/component/3rd-party/libjpeg-turbo/raw
10. source/component/3rd-party/libpng/raw
11. source/component/3rd-party/coremark/raw
12. source/component/3rd-party/evm/raw
13. source/component/3rd-party/lua/raw
14. source/shell/media/sdl2/3rd-party/SDL_image
15. source/shell/media/sdl2/3rd-party/SDL_ttf
16. source/component/3rd-party/lvgl/extension/lv_lib_freetype/raw

2) 使用GIT工具直接下载vsf_all_in_one
https://github.com/vsfteam/vsf-all-in-one.git

3) 开发IDE支持
1. IAR
复制IAR的AIC8800 flashloader:
把source/hal/driver/AIC/AIC8800/vendor/ide/iar下的AICSemi目录复制到IAR安装目录下的arm/config/flashloader目录下。
2. MDK
3. VSCode

4) 第三方代码补丁
1. IAR
vsf\example\template\project\iar\vsf_template.eww
Workspace里,选择“vsf_template_aic8800”。

在工程中,修改zlib源码,文件vsf\component\3rd-party\zlib\raw\inftrees.c,inflate_table函数:
``` c
int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work)
codetype type;
unsigned short FAR *lens;
unsigned codes;
code FAR * FAR *table;
unsigned FAR *bits;
unsigned short FAR *work;
{
```
改为
``` c
int ZLIB_INTERNAL inflate_table (codetype type, unsigned short FAR *lens,
                             unsigned codes, code FAR * FAR *table,
                             unsigned FAR *bits, unsigned short FAR *work)
{
```
然后就可以编译了。

2. GCC
不需要修改

三、开发板硬件说明
1) 基本说明
AIC8800M开发板上,引出了所有的芯片IO和电源。引出了调试串口引脚和SWD调试引脚。由于芯片么有复位引脚,所以做了电源复位按键PRST,按下后,切断电源,释放后恢复。AIC8800启动是通过PWR_KEY引脚上拉实现的,可以通过开发板上的PWR按键来启动AIC8800M。

2) 硬件初始化
第一次使用AIC8800M的时候,芯片的USR flash并未初始化,所以需要通过串口命令来进行芯片的初始化,串口设置为921600_8N1。
启动的时候,串口上会提示boot abort: -1,表示AIC8800的USR flash没初始化。这个时候,执行如下2条命令(按键输入命令,然后按回车):
f 1 3 1 2 1
f 3
执行完成后,重新上电(按一下PRST按键)。这个时候会提示boot abort: -7,表示flash中没有可以启动的应用镜像。
如果芯片里已经下载过可以使用的程序的话,串口上会提示ready to boot...,并且进入应用程序。注意,进入应用程序后,不能通过SWD接口调试,比如在boot模式才能调试。如果已经下载了程序,可以在上电的时候,疯狂按回车,终止跳转到应用程序,停留在boot模式下(提示符Boot >)。

3) 下载程序
可以通过串口下载程序,在boot模式下,执行下面的命令
x 8000000
然后,通过xmodem(1K)发送程序镜像。

4) SWD调试
在boot模式下,可以通过SWD下载程序,并且启动调试。
在跳转到应用后,只能通过SWD以attach的方式来调试。

1. IAR
如果之前已经复制好AIC8800的flashloader的话,可以直接通过SWD调试器来调试。注意如果需要选择芯片的arch的话,这里必须选择Cortex-M4.
2. GCC
TODO

Happy Hacking!!!

#23 Re: ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-29 22:50:32

vsf
sblpp 说:

强烈支持楼主开源~~~
先把AIC8800M的资料共享下啊,一起搞

目前已经在原厂许可的范围内,公开了一部分SDK了
样片啥的也都有了,也可以直接用一些linux的应用了,后面我看看怎么玩

#24 Re: ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-29 22:49:33

vsf
达克罗德 说:

widora就有这种,还有国外的Onion2,都是用MT7688做的

我看了一下,这个貌似资源足够直接linux了。上了linux基本生态就都有了,不过一些MCU等级的倒是很难有这种生态

#25 ESP32/ESP8266 » 有没有用wifi soc做的pi? » 2021-12-28 14:10:36

vsf
回复: 13

最近几个用wifi soc的项目接近尾声,想搞一个pi玩玩
用wifi soc做主控(目前选择AIC8800M),扩展屏幕,电容触摸、USB 2.0 HS、Audio、Ethernet,当然,还会有双频wifi以及双模蓝牙。
wifi soc开发板貌似没见过太多这样形态的,可以玩些啥呢?
因为扩展了USB,所以很多功能都可以扩展,比如通过USB显示适配器接VGA显示器啥的。

#27 PikaPython(嵌入式Python引擎) » 汇报几个IAR下的编译问题 » 2021-12-21 01:26:39

vsf
回复: 4

1. BaseObj.c 39行,需要加类型转换
Error[Pe167]: argument of type "NewFun" is incompatible with parameter of type "void *" Z:\vsf\example\template\demo\pikascript\pikascript-core\BaseObj.c 39

2. PikaOjb.c  298和473行,同样类型转换
Error[Pe167]: argument of type "NewFun" is incompatible with parameter of type "void *" Z:\vsf\example\template\demo\pikascript\pikascript-core\PikaObj.c 298
Error[Pe167]: argument of type "Method" is incompatible with parameter of type "void *" Z:\vsf\example\template\demo\pikascript\pikascript-core\PikaObj.c 473

#28 Re: PikaPython(嵌入式Python引擎) » 如何提交rtos的支持? » 2021-12-21 01:10:07

vsf

pika_start_file.png

pika_start_mcu.png
IAR里运行U盘里的py脚本,不过IAR编译有几个错误,在这里: https://whycan.com/t_7587.html

#29 PikaPython(嵌入式Python引擎) » 如何提交rtos的支持? » 2021-12-21 00:55:38

vsf
回复: 4

试了一下,倒是很容易就跑起来了,几行代码就行了

pika_start.png

不过,如果我想加一些API的话,要如何提交?类似rtt,我想加一些我们自己系统的API

#30 Re: PikaPython(嵌入式Python引擎) » 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行 » 2021-12-21 00:14:22

vsf

@lyon1998
好的,我看看咋移植的。我看了一下语法,确实有一些还需要完善,不知道性能咋样

#32 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » wifi6 soc可以玩些啥? » 2021-12-20 23:07:16

vsf
david 说:

可以做jtag 加上楼主说的usbip 可以做wifi的jtag 特别适合有需要隔离的场合

我们之前正好有一个方案,就是只用了USB,wifi都没用到。因为芯片资源丰富,直接用了linux里的一个应用,配合自己写的linux子系统和libusb等等。
我同事也弄了一个cmsis-dap方案,后面也可能上wifi

#33 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2021-12-20 14:49:01

vsf
xiaoqianxiansheng 说:

有USB的wifi固件吗

官方应该有现成的吧

#34 Re: 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » 坐标深圳,招两个MCU软件工程师 » 2021-12-19 23:43:27

vsf

我公司里有20K左右的,能力都还不错
10K的话,一般新人或者1年左右经验的水平吧

#35 Re: Cortex M0/M3/M4/M7 » 分享我画的M482简易开发板,板载DAPLink! » 2021-12-19 23:26:31

vsf

现在nulink还需要破解CDC功能吗?
我记得几年前,nulink是要破解后,才具备CDC的,好久没玩新塘的东西了

#36 技术人生/软件使用技巧/破解经验/技术吐槽/灌水 » wifi6 soc可以玩些啥? » 2021-12-19 23:20:38

vsf
回复: 4

自己做的AIC8800开发板估计也快弄好了,自己的其他项目也开始量产了。正在考虑wifi6还能玩些啥东西?有啥推荐的不?

之前想过做一个无线USB,通过usbip-win来实现,技术上倒是问题不大,之前也简单测试过了,只是usbip-win的驱动一直都没做认证,用起来太麻烦。

#37 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-25 13:51:53

vsf

已经提交,工程位于source/example/template/project/cmake/esp32s2下
编译的话,需要定义一个全局的环境变量VSF_PATH,设置为clone的vsf的目录
然后,使用esp的方式直接编译即可。

如果编译过程总,提供btstack文件找不到的话,做如下修改:
1. main/CMakeLists.txt中,去掉btstack的.c,以及去掉btstack_demo.c
2. source/example/template/config/vsf_usr_cfg/vsf_usr_cfg_esp32s2.h里,APP_USE_BTSTACK_DEMO配置为DISABLED

esp32的windows环境下,遇到一些问题,就是如果参与编译的文件太多,连接会出错,官方没有提供任何解决方案。
linux环境下没问题。
解决方法,去掉一些模块,修改source/vsf/component/CMakeLists.txt,去掉3rd-parth、crypto、debugger、tcpip、ui。当然,实际可能不需要去掉这么多

#38 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-24 19:27:40

vsf
david 说:

支持u盘吗 文件系统可以用linux的吗 还是只有fat

USB主机里,有MSC驱动,可以支持U盘。
文件系统是我们自己写的,因为里面其实并不是linux,esp32s2也跑不起来linux。
截图里,虽然写的是linux,这个只是我们自己写的linux子系统,为了编译一些Linux应用,模拟出linux的一些API和库而已。
还有几个其他的文件系统,比如vfs(用于建立虚拟目录和文件)等等

#39 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-24 19:24:34

vsf
armstrong 说:

真心话,看vsf代码就是一种享受!

谢谢,虽然目前还有一些没有完全统一,不过VSF代码有非常严格的标准,很多细节都做了规定。
不过,也还是有不少人说VSF的代码其实并不好,毕竟不同人的口味不同

#40 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-24 12:11:37

vsf
xiaohui 说:

是的,更新会提交到这里,不过,目前还没更新。之前的更新只是内核的移植,USB移植并不完整

#41 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-23 12:49:53

vsf
阿黄 说:

vsf是啥?能介绍一下吗?

这个是我们自己做的系统框架,事件驱动的抢占式多任务内核,外加各种模块/驱动。
甚至还有一个linux子系统模块,可以用于编译一些linux的应用代码。
不过,文档啥的还都没完善,所以也就秀一下。

#42 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-22 12:37:46

vsf
msr06rr 说:

楼主牛逼,建议给官方提PR...
SDK暂时没有host驱动,但是从这里发布的进度来看似乎是有这个计划的:https://esp32.com/viewtopic.php?f=10&t=14532


原厂估计不会理我吧。。。。

后面几个wifi芯片,我们都会玩玩,同样的平台,同样的开发方式

esp32s2的估计这周提交,前两天优化了设备插拔的部分。

#43 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-19 21:54:49

vsf

esp32s2的USB主机模式,应该没什么人用,所以官方的SDK里都不支持
这个我们也就只是玩玩而已,估计也没时间去准备文档,不过驱动代码都会开源

#44 Re: ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-19 21:53:42

vsf
david 说:

你这usb追踪工具是啥

LeCroy的USB协议分析仪,很早以前买的东西了

#45 ESP32/ESP8266 » esp32s2移植VSF,顺便跑起USB主机协议栈 » 2020-12-18 18:40:58

vsf
回复: 23

最近一段时间入坑esp32s2,移植了vsf内核,移植了dwcotg的USB主从机驱动。
虽然不能说所有坑都填了,不过也至少很多东西可以跑起来了。

先秀一些实际效果(USB主机相关),整理好代码后,提交到github

bcm20702蓝牙狗,配合btstack,链接PS4蓝牙手柄:
esp32s2_bthci.png

直接USB驱动PS4手柄:
esp32s2_ds4.png

使用U盘:
esp32s2_msc.png

使用libusb控制设备:
esp32s2_libusb.png

#46 Re: 好钜润半导体(TIKY) » 入坑TKM32F499 » 2020-06-17 05:04:09

vsf

一直在吃灰,之前买的时候,官方说不支持调试,就是在没兴趣玩了

#47 Re: Cortex M0/M3/M4/M7 » STM32 usb虚拟串口 最大速度可以达到多少 波特率可以设置到多少? » 2020-06-17 05:00:20

vsf

有些眼熟。。。
USB传输都是主机控制的,速度也肯定和主机有关

#48 Re: Cortex M0/M3/M4/M7 » 基于新唐M0的XXTEA加密解密算法源码--缥缈九哥 » 2020-06-17 04:52:02

vsf

xxtea的代码,一般都不需要基于什么特定的MCU吧?基本都是通用的

页脚

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

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