so是glibc编译的么。依赖不多的话加入glibc的包支持应该就行了吧
用什么烧写程序?
三个方式
1.自己拆下flash烧录,spi nor flash烧录器可以烧
2.淘宝买一个RTD的烧录器,现在都是usb接口的,很方便
3.自己制作一个,github上有参考的ESP32做的,也有CH341做的。其实主要就是i2C进行通信然后烧录
@迪卡
对哦,为什么不用网口
赞,感谢分享过程。可以搞搞miracast投屏
可以的,看我之前的帖子
在Linux里面需要用到中断功能,是通过修改/sys/class/gpioxx/edge改成对应的非none选项,然后把/sys/class/gpioxx/direction 改成in就好。
然后使用的时候通常是开启一个线程,然后用poll的形式来处理中断。
在A133上面,也是使用这个方式,但是发现编译好的app运行一次后,kill掉,再运行,就无法触发poll 了,初始化io的时候也没有报错。
查看代码,发现也没有啥问题。open和close都有。
最后经过实验,发现是在已经存在/sys/class/gpioxx文件夹的时候,xx按键初始化成外部中断就会无法触发poll。需要unexport,收回对应引脚的文件夹后,再次初始化才行。其他家的芯片好像没有这个要求
因此发上来方便后面的人遇到同样的问题的时候可以参考,下面是对应的测试代码
//带unexport的代码
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <poll.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#define GPIO_PATH "/sys/class/gpio"
#define GPIO_EXPORT_FILE GPIO_PATH "/export"
#define GPIO_UNEXPORT_FILE GPIO_PATH "/unexport"
#define GPIO_EDGE_FILE "edge"
#define GPIO_VALUE_FILE "value"
int export_gpio(int gpio_num) {
char buffer[4];
int fd = open(GPIO_EXPORT_FILE, O_WRONLY);
if (fd < 0) {
perror("Failed to open export for write");
return -1;
}
snprintf(buffer, sizeof(buffer), "%d", gpio_num);
write(fd, buffer, strlen(buffer));
close(fd);
return 0;
}
int set_gpio_direction(int gpio_num, const char *direction) {
char path[64];
snprintf(path, sizeof(path), GPIO_PATH "/gpio%d/direction", gpio_num);
int fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Failed to open direction for write");
return -1;
}
write(fd, direction, strlen(direction));
close(fd);
return 0;
}
int set_gpio_edge(int gpio_num, const char *edge) {
char path[64];
snprintf(path, sizeof(path), GPIO_PATH "/gpio%d/%s", gpio_num, GPIO_EDGE_FILE);
int fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Failed to open edge for write");
return -1;
}
write(fd, edge, strlen(edge));
close(fd);
return 0;
}
int is_gpio_exported(int gpio_num)
{
char path[64];
snprintf(path, sizeof(path), GPIO_PATH "/gpio%d", gpio_num);
return !access(path, F_OK);
}
int main() {
int gpio_fd, ret;
struct pollfd fds[1];
int gpio_num = 23; // Replace with your GPIO number
if ()
{
//这里要unexport下
int unexport_fd = open(GPIO_UNEXPORT_FILE, O_WRONLY);
if (unexport_fd >= 0) {
char buffer[4];
snprintf(buffer, sizeof(buffer), "%d", gpio_num);
write(unexport_fd, buffer, strlen(buffer));
close(unexport_fd);
}
}
// Export GPIO and set direction and edge
if (export_gpio(gpio_num) < 0)
return 1;
if (set_gpio_direction(gpio_num, "in") < 0)
return 1;
if (set_gpio_edge(gpio_num, "rising") < 0)
return 1;
// Open value file for reading
char value_path[64];
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/%s", gpio_num, GPIO_VALUE_FILE);
gpio_fd = open(value_path, O_RDONLY | O_NONBLOCK);
if (gpio_fd < 0) {
perror("Failed to open value for read");
return 1;
}
// Setup poll structure
fds[0].fd = gpio_fd;
fds[0].events = POLLPRI;
while (1) {
ret = poll(fds, 1, -1); // Wait indefinitely for event
if (ret == -1) {
if (errno == EINTR)
continue;
perror("poll");
break;
} else if (ret == 0) {
printf("Timeout occurred!?\n");
continue;
}
if (fds[0].revents & POLLPRI) {
// Read the value to clear the interrupt
lseek(gpio_fd, 0, SEEK_SET);
char value_str[32];
read(gpio_fd, value_str, sizeof(value_str));
printf("Interrupt detected on GPIO %d\n", gpio_num);
// Process the interrupt here...
// Break after processing one interrupt for demonstration purposes
break;
}
}
// Cleanup
close(gpio_fd);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/value", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/edge", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/direction", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d", gpio_num);
rmdir(value_path);
//这里要unexport下
int unexport_fd = open(GPIO_UNEXPORT_FILE, O_WRONLY);
if (unexport_fd >= 0) {
char buffer[4];
snprintf(buffer, sizeof(buffer), "%d", gpio_num);
write(unexport_fd, buffer, strlen(buffer));
close(unexport_fd);
}
return 0;
}
//没有执行unexport的代码
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <poll.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#define GPIO_PATH "/sys/class/gpio"
#define GPIO_EXPORT_FILE GPIO_PATH "/export"
#define GPIO_EDGE_FILE "edge"
#define GPIO_VALUE_FILE "value"
int export_gpio(int gpio_num) {
char buffer[4];
int fd = open(GPIO_EXPORT_FILE, O_WRONLY);
if (fd < 0) {
perror("Failed to open export for write");
return -1;
}
snprintf(buffer, sizeof(buffer), "%d", gpio_num);
write(fd, buffer, strlen(buffer));
close(fd);
return 0;
}
int set_gpio_direction(int gpio_num, const char *direction) {
char path[64];
snprintf(path, sizeof(path), GPIO_PATH "/gpio%d/direction", gpio_num);
int fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Failed to open direction for write");
return -1;
}
write(fd, direction, strlen(direction));
close(fd);
return 0;
}
int set_gpio_edge(int gpio_num, const char *edge) {
char path[64];
snprintf(path, sizeof(path), GPIO_PATH "/gpio%d/%s", gpio_num, GPIO_EDGE_FILE);
int fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Failed to open edge for write");
return -1;
}
write(fd, edge, strlen(edge));
close(fd);
return 0;
}
int main() {
int gpio_fd, ret;
struct pollfd fds[1];
int gpio_num = 23; // Replace with your GPIO number
// Export GPIO and set direction and edge
if (export_gpio(gpio_num) < 0)
return 1;
if (set_gpio_direction(gpio_num, "in") < 0)
return 1;
if (set_gpio_edge(gpio_num, "rising") < 0)
return 1;
// Open value file for reading
char value_path[64];
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/%s", gpio_num, GPIO_VALUE_FILE);
gpio_fd = open(value_path, O_RDONLY | O_NONBLOCK);
if (gpio_fd < 0) {
perror("Failed to open value for read");
return 1;
}
// Setup poll structure
fds[0].fd = gpio_fd;
fds[0].events = POLLPRI;
while (1) {
ret = poll(fds, 1, -1); // Wait indefinitely for event
if (ret == -1) {
if (errno == EINTR)
continue;
perror("poll");
break;
} else if (ret == 0) {
printf("Timeout occurred!?\n");
continue;
}
if (fds[0].revents & POLLPRI) {
// Read the value to clear the interrupt
lseek(gpio_fd, 0, SEEK_SET);
char value_str[32];
read(gpio_fd, value_str, sizeof(value_str));
printf("Interrupt detected on GPIO %d\n", gpio_num);
// Process the interrupt here...
// Break after processing one interrupt for demonstration purposes
break;
}
}
// Cleanup
close(gpio_fd);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/value", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/edge", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d/direction", gpio_num);
unlink(value_path);
snprintf(value_path, sizeof(value_path), GPIO_PATH "/gpio%d", gpio_num);
rmdir(value_path);
return 0;
}
目前分析可能是由于硬件设计导致的原因,测试了市面上常见的几款开发板,基本上都存在噪音,唯独测试百问网的开发板没有噪音
可以参考之前问过的帖子讨论
探讨一下全志芯片的音频接口硬件电路连接应该怎么使用最好
官方手册上没写。DDR3标准电压1.5V,官方参考电路时1.35V,luckfox pro接了1.8V。这个DDR_VDDQ能从1.3到1.8随便接么?
是不是分G2和G3两个型号
一般不用。摄像头就是拿图就好
well,前排支持下
龙讯的LT7911 还有一个硅谷数模ANX7530
谢谢楼上几位,t113-s3和F133-B只有H265解码,没有编码啊
那要带tvin的好像没有更好的了。可以使用R528 + 一个TVIN转BT565的芯片。从528的摄像头接口输入
找对地方了。F133-B ,找晕哥买 https://item.taobao.com/item.htm?id=687730645771
关注这个问题,帮顶
基本都是松瀚,瑞昱的方案。也有一些其他不是很出名的。有代码可调一些参数,像码率,图像质量什么的,最后帧率就算usb2.0 8M摄像头用mjpeg格式的话也能做到20-30fps
一般都是可以的。用spi初始化就不用太特定去写屏幕驱动,配下参数就行。如果用dsi的命令去初始化就要写驱动
微凉VeiLiang 说:不是直接用配套代码就可以了么。 dpp2607 + dlpa1000的搭配
大佬你开源的F1C100板子还有么,能不能卖一块给我学习
没有贴片。你去打板子手工贴就行
看到https://github.com/afu120/Tina-Linux这个sdk很全面,但是sdk里面有些是子仓库,mangopi-sbc 这个账号好像把全部仓库撤掉了。
类似下面的子仓库没有,有人能够分享下么
https://github.com/mangopi-sbc/tina-spl-pub
https://github.com/mangopi-sbc/tina-package
不是直接用配套代码就可以了么。 dpp2607 + dlpa1000的搭配
不错,买了一个,研究研究看如果可以做wifi投屏就好
微凉VeiLiang 说:@AAA_GET
那证明有中断了。刷图的问题或者说你cvbs信号没有经过滤波和隔直电容就接到脚上楼主你那个摄像头刷视频延迟很高啊,100-200ms,好像没有用到DMA哦,放弃了。我打算用带DMA的裸机代码
要用debe。忘记我这个rtt工程有没有开源debe出来了
换成4.0的sdk就好了.....1920*1080也不会花屏
@AAA_GET
那证明有中断了。刷图的问题或者说你cvbs信号没有经过滤波和隔直电容就接到脚上
@AAA_GET
要修改这个rtconfig.py文件,指定下你的编译工具链路径。具体也可以参考下面的帖子
https://whycan.com/t_5755.html
楼主还在更新吗?我在查芯片的时候找到了这里,发现楼主的GitHub仓库,已经无法使用在最新的RTT上了,想问楼主有没有啥好的解决办法
主要是报什么错误?
@微凉VeiLiang
找到能够使用的解包工具了
imgRePacker_206.zip
微凉VeiLiang 说:gpu频率也调过几个版本,好像也是没有效果
抱歉,Tina5上面我们没有测试过Qt OpenGL,试一试Tina4(需要自己行勾选Qt编译打包):
链接: https://pan.baidu.com/s/16aSGIsIlPa_K2euZVltRKA?pwd=A133
提取码:A133
好的,感谢,我下载看看
gpu频率也调过几个版本,好像也是没有效果
尝试了好几样操作都不行.....有点难搞
1.降低ddr频率,也降到了360Mhz,问题依旧
2.把开发板能够使用的的ko 两个替换,重启没啥报错,但是问题依旧
3.把开发板能够运行的 libgpu里面同样的so文件替换,软连接好,后编译出固件,问题依旧
4.修改几项设备树gpu相关参数和开发板的固件一样,依旧无果....
想问下能否单独分享一个kernel镜像和文件系统镜像。boot.img 和rootfs.img 。主要是论坛前面找了好几个解包软件都不好使,非常感谢
@memory
感谢,这个固件在开发板上面可以正常跑了。我看看我的板子是不是也是内存频率或者配置的问题
@微凉VeiLiang
我问了一下店主,说可能是tina4只适配了1G,2G内存的问题,4G版本可能需要微调一下 sys_config.fex ddr 参数。
好的,感谢。我买的这个确实是4G版本
我使用上面的板子和固件,找到了一个屏幕800*480的。发现开机后进入系统后没过几秒就会卡死。然后趁着这几秒如果kill掉 /usr/bin/cellphone 就不会卡死。经过处理掉开机自启动后,手动运行,也是会卡死花屏,这个花屏是死机那种花屏。如下视频所示,这个不知道是因为硬件差异还是什么,供电的话也加多了一个供电的usb线了。现象是一样的
@memory
谢谢,我的是这个开发板。不过屏幕没有,我捣鼓捣鼓
tplayer播放mp4文件是正常的。QT如果不使用到gpu也是正常的
memory 说:感谢,这边看到的是左右错位花屏来回跳。你这个解决方案我试下看看。
还是一样的,不知道是什么情况。跑手机的demo视频如下
感谢,这边看到的是左右错位花屏来回跳。你这个解决方案我试下看看。
@微凉VeiLiang
https://www.bilibili.com/video/BV1fU4y1z7Rp/https://www.bilibili.com/video/BV1LK411f7x9
跑这个 cellphone 等Qt demo都是正常的
嗯呢,难道和我的分辨率有关。使用的是1920*1080分辨率。或者说内存速度。我也有小智的a133的开发板,方便分享个系统烧录镜像么,之前我测试在开发板上面也是跑OpenGL的demo有异常的
opencl 只会跑demo,不会onnxruntime
我这边 Qt跑OpenGL DEMO正常,没有花屏。
opengl demo是格子吧。我看你好像移植了qt5. 试下跑
export QT_QPA_PLATFORM=eglfs && \
export QT_QPA_EGLFS_INTEGRATION=none && \
/usr/share/qt5/examples/opengl/hellogles3/hellogles3
我在荔枝派nano运行,颜色不对,应该是RB交换了,请问在哪配置,还有有办法修改游戏的分辨率吗,这么大一块屏幕就显示这么点区域
可以自己处理下刷图,每个像素点绘制多次,甚至可以插值,显示更细腻点
感谢分享。我用a133跑这个opencl_demo 计算正常。但是作为onnxruntime 的后端,跑不过onnxruntime test。失败原因是计算结果不一致
同时跑qt 使用gpu 做后端刷图时候会花屏,请问有遇到过么
声音驱动是正常的么?
SND_PCM_FORMAT_U8 这个配置是是配成8bit吧,默认的工程使用的是 16bit的wave数据
原代码
f1c100s_audio_config(1,16,44100);
f1c100s_audio_open(SoundBufLen*2);
微凉VeiLiang 说:你没插有usb转串口的设备就不会有/dev/ttyUSB0. 如果已经插了就 试下lsusb看看枚举是否成功
我查了一个u盘上去,也没有这个文件。但是lsusb可以看到。
插u盘是不会有的。应该是要usb虚拟串口设备才是/dev/ttyUSB0或者/dev/ttyACM0
瞬间涌现了高中刚学51单片机时候记忆
当时买了一本51的数,上面有个例程就是点灯。
书上是这样写的
#include <reg51.h>
void main()
{
while(1)
{
P1_2 = 1;
P1_3 = 0;
P1_4 = 1;
}
}
说编译好烧进去能够在对应的脚有电平。我一个字母一个符号都照抄了,编译不过....
当时一点概念都没,最后论坛网友提示说了一堆可能的原因。其中就有个说出来了上面其实其实是最低级的错误,其实是书上写错了,或者说P1_2是宏但没给定义
正确的操作应该是P^2=0;
改了就好了=_=
你没插有usb转串口的设备就不会有/dev/ttyUSB0. 如果已经插了就 试下lsusb看看枚举是否成功
@vsf
好的,我问商家拿到一个更全面的图
好几款芯片后缀价格差别比较大,有什么区别呢
CVBS就是这样的av画质。要更好看的效果要去调饱和度和对比度,可以后期算法调,也可以调tvd的相关寄存器,不过这个资料少
usb gadget使用在linux下使用要通过configfs去配置 的,你可以找下或者gpt帮你生成一个shell脚本,运行脚本才会枚举
用的什么接口?dvp还是cvbs
不知道实际效果如何,如果用来做航模FPV飞行眼镜会怎样?
近视人表示根本看不清。还有就是这个是单目的
写在前面
之前就想着买个AR光波导的眼镜体验下,然后最近在闲鱼上看到有买200左右的坏的眼镜,就果断下手了。之前也查过,网上好像只有rokid glass一代的拆解,没有二代的,这次收到就果断开拆!
开始拆解
正脸
光波导镜片,我买到这个还是碎掉的。。。。还有就是上面有点胶纹,看群友拆解的,说是里面PBS到光波导的透镜部分粘合的胶有点问题,导致有胶纹。也不知道能否清掉再找合适胶粘回来
先卸掉盖头
鼻托这里有个螺丝,拆拆拆
接下来的是前盖,也是简单卡一下,一扣就下来了,很方便
紧接着是 到胶粘+卡扣的外壳,上面主要也还是胶粘,大力出奇迹,扣就是了
扣下来的壳子,看看上面就是粘胶的
----------------------------------【分割线】-----------------------------------------
接下来是到主板,先来一张主板的全貌
三个芯片赫然在列。
【右】一个是凌阳的SPCA2680A,主要用于摄像头驱动,还有麦克风驱动。USB上电就能有一个UVC摄像头和麦克风输入,就是它的功劳。
【中】一个是龙讯的接口转换IC,LT7611D,作用是把DP视频信号转成MIPI-DSI信号送到LCOS驱动ic。
【左】最后一个是奇景Himax的HX7816,作用是驱动LCOS屏幕显示,支持MIPI和LVDS输入视频,转换成LCOS的时序驱动显示的信号.当前模组的LCOS一共有16组差分线。还有带RGB的LED驱动信号输出,用来控制灯光按照序列显示点亮。目前没有这个芯片的规格书流出,楼主搞来一些样片了
LCOS驱动芯片HX7816特写
LCOS背光驱动IC,RGB三通道。国半的L3549SQ
在眼镜正中间这颗芯片不知道型号,估计是位姿获取的9轴或者6轴位姿传感器,有认识的朋友告知下
整个眼镜的主控IC STM32F411CE6
调试接口和一些不知名的IC或者MOS管
这个地下还有个按键,确实不知道做什么用的,估计是为了进入某种模式或者升级模式吧。还有些触点是用来焊锡短接的,方便切换一些电路使用,值得参考
----------------------------------【分割线】-----------------------------------------
接下来到光机了
同样是胶粘的,找到缝隙就撬撬撬
费点劲搞下来了
光机特写
光机的屏幕是HX7318,分辨率是1366x768.但是在眼镜里面是1280x720.应该是切了部分不用。这个屏也没有规格书漏出
----------------------------------【分割线】-----------------------------------------
我收到这个光机是断掉的,自己拿个uv胶直接给粘上了。然后买了个HDMI转typec带供电的线,终于能够点亮了,但是显示有问题,如下
只能修咯,还有什么办法。为此还再买多一个好的对比。通过对比,可以确认光机和屏幕是ok的。问题出在板子上。
首要怀疑就是HX7816,先是吹焊下,发现一样的。再吹焊下LT7911,发现依旧。
没辙,总感觉是HX7816的问题,毕竟是bga,看不出假焊。找了几个样品回来,万事具备,拆!
没想到拆了再焊接一个新的上去,问题依旧。。。。。
只能自己对比好的那个眼镜了,typec到眼镜的线也怀疑过,对换了也是一样的。
又怀疑是固件没对,用stlink把好的眼镜固件读出烧入到坏的上面,没想到依旧是有问题。。。。。
最后除了座子还有就是LT7911的问题,还是先怀疑LT7911的问题吧,毕竟我手上也没有座子,直接开始吹焊对换IC
哈哈,没想到真的是LT7911的问题,对换了之后两个眼镜的现象也跟着变换了。能够正常显示了,显示效果偏绿,还有就是对比度不高。估计和光机有关了
好了,深夜,就码字码到这吧,喜欢玩屏幕、投影和AR眼镜的可以加群交流。后面再玩下衍射光波导
做了一个小的OVP0921新驱动版,板载一个PY32用来配置输入接口。还额外做了一个HDMI转RGB的板子,基于RTD2660.带一个I2S 的DAC和3W的功放,支持声音播放。
两个板子大小都是38mmx45mm左右。同样用贴片螺柱固定住了投影模组
目前调测RGB完美运行,组装了一下,一个小投影诞生啦
这个是之前的大号镜头。我也买了一个
感谢分享,用rtt很方便就对接上文件系统
前排支持一下
@alizx
参考
https://whycan.com/t_5755.html
我搞过。裸机是可以,但是最后还是上个rtos会更方便一点
楼主有发现DLP的没? TI的好像效果要好一点。
DLP都要专门控制ic。比较麻烦
赞,颜色好像反了
720P的贴了一个板子,这次直接做两层板,正常能用,不用加钱。
加入了Flash使用。目前自动启动能够运行flash的代码了。没有连接mipi信号显示默认的pattern
分辨率1280x720.原一款投影上的,估计是退单的光机。分辨率高,但是驱动复杂,要专门的驱动IC。LCOS芯片是OVP2200。驱动IC我们通常使用的是OVP0921.这个芯片有点贵,应该在70以上(有的报价140),嘉立创目前有10个存货。芯片作用是把输入信号RGB888或者mipi转出lcos屏的差分信号。同时支持梯形纠正,缩放等功能。通常这款芯片是应用于AR眼镜上面的
楼主自己买了写OVP0921芯片,做了个驱动板,点亮了这个屏。目前驱动板改了一个版本,输入是标准的40Pin的RGB888接口和树莓派的mipi-csi接口。
驱动过程,注意的是OVP0921内置了单片机,单片机的代码有两种方式启动运行。一种是通过外置一颗spi-flash启动,一种是通过I2C接口上传固件序列启动运行。目前好像是必须要有固件代码。配置其他寄存器才生效。驱动过程中还有个问题就是,usb不知道是否有用,默认好像是连接上去没有反应的。
效果还行,感觉灯光效率ok。驱动灯光我这里没有用通常的lcos三色灯驱动ic,采用分立的共阳ic,是hi7003.感觉也还行
1.模组貌似是这款投影仪上面用的。型号AAXA Pico HD Projector .
2.还有一些AR眼镜光波导的720p也是用这款屏幕。外网上面找到一个模组的资料
ovp2200模组30Pin-DM-ARM-101.pdf
3.这里是楼主整理的一个资料文档。更多的资料不方便分享,因为属于一些保密文件。类似于规格书这种,具体有问题群里可以交流
720p投影小模组接口定义和驱动方法.pdf
引脚定义
楼主做的一个驱动板
分辨率320x240.体积小,驱动简单,只要做一个转接板转出来就好,就连初始化都不需要。默认上电配置就是RGB666接口。芯片是HX7033。灯是只有一颗白灯,亮度一般般。白灯貌似是himax家的专利,其他的lcos都是三原色。himax家大都是白光的。采用的是delta RGB像素,就是在屏上加个滤色膜,做到彩色显示。
效果一般般。灯光较暗淡。不过只要10块钱,免驱,又这么小巧。要什么自行车呢,嘿嘿
支持RGB666接口输入,也是通用40Pin接口。然后灯光驱动。还有一个3.3V升压10V给屏用。
背部还预留了一个ESP32-S3的模块(要支持RGB接口引出那款)和TF卡座。本意是还可以做个无线投屏啥的。还没有调,有人调好可以分享下,哈哈
HX7033_Board.zip
咸鱼10元模组资料AN-HX7033-AN01-ver01.pdf
就码这么多字吧,有问题可以加群聊,或者回帖
楼主有没有兴趣研究下 国科微的 GK7205V200 这个才不到 200 也是A7 + 64MB 更具有性价比。并且淘宝能买到元件
这个是不是可以通用以前海思的sdk
@jiabuda
是的,很方便使用。配置uMTP的conf文件就能任意你想作为显示的文件夹
微凉VeiLiang 说:USB gadget下的ffs,可以做mtp设备,用开源项目 https://github.com/viveris/uMTP-Responder 就很方便
请教一下,这个支持t113这类不。看了代码是纯驱动好像~~应该类似adbd?
基于functionfs的,一般默认都编译进去了。uMTP只是一个应用程序,放到文件系统,需要时候执行下脚本调用就能作为mtp设备连接电脑了
USB gadget下的ffs,可以做mtp设备,用开源项目 https://github.com/viveris/uMTP-Responder 就很方便
两Lane的都可以,基本都能驱动。我裸机驱动过几个mipi摄像头
裸机使用usb host可以。但是接收uvc类设备的数据的还是很麻烦的
melis 上本身不支持么?
接上篇F1C100S玩游戏系列-FC红白机Nes模拟器(二)-移植正点原子的nes模拟器(ye781205的汇编核心),带声音,ARM转GNU汇编
和第一篇F1C100S玩游戏系列-FC红白机Nes模拟器(一)-移植InfoNes到BoloRTT工程,带Audio驱动,支持声音
现在第三篇,移植windows端最常见到的模拟器VirtuaNes,支持绝大部分的mapper了,可以说,我现在能找到的nes它都能正常运行!VirtuaNes是c++编写的,好在rtthread的启动linked文件对于c++也有支持。具体修改下面说。其实移植是在一年半以前了,但是一直没有发出来,是因为好像跑起来还有点bug,就是有时候会运行异常,没有找到具体原因。一拖再拖。想想还是发出来让大伙一起找好过自己摸索(逃。移植的是最新版本为0.97,先上链接https://github.com/VeiLiang/BoloRTT.git
---------------------------------------------------------------------------
然后接下来说说移植过程中遇到的坑
坑1:
如果你移植源码到rtthread的工程下,你会发现编译好,运行就会出问题,无法正常跑,,,这是因为VirtuaNes代码里面用到的char型,是有符号的。所以在makefile 或者说rtconfig.py中加入一个编译选项-fsigned-char
坑2:
对于有些指针是强转unsigned char* 到unsigned short或者unsigned int*的。如果unsigned char * 传入的地址不是4字节对齐的,那就崩了,因为没有加入非对齐访问。对于这种情况,我们可以把对应地方修改下,具体例子函数看inline WORD OP6502W( WORD addr )
还有一个坑是移植完成感觉特别卡慢的,,但时代久远,又没有做笔记,害。。。记起来再来这里说吧
----------------------------------------------------------------------------
说说rtthread如何加入c++的支持
1.在link脚本中加入以下代码,不然编译时候会报undefined
__exidx_start = .;
.ARM.exidx :
{
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
_sidata = .;
}
__exidx_end = .;
__rodata_start = .;
.rodata : { *(.rodata) *(.rodata.*) }
__rodata_end = .;
. = ALIGN(4);
.ctors :
{
PROVIDE(__ctors_start__ = .);
KEEP(*(SORT(.ctors.*)))
KEEP(*(.ctors))
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
PROVIDE(__ctors_end__ = .);
}
. = ALIGN(4);
.dtors :
{
PROVIDE(__dtors_start__ = .);
KEEP(*(SORT(.dtors.*)))
KEEP(*(.dtors))
PROVIDE(__dtors_end__ = .);
}
. = ALIGN(4);
2.代码中加入:void *__dso_handle = 0
-------------------------------------------------------------
最后上图和视频,顺便预告一下第四篇,会用图中的小屏幕awtk做一个界面,发布时间未定。。。
使用boloRTT中的工程代码,想测试下F1C100S 的USB host,编译烧写至SPIFLASH运行时,USB产生不了中断,烧写至内部ram运行时,却一直有中断触发,一直打印irq: usb_irq=08, tx_irq=00, rx_irq=00, dma_irq:0是什么原因
应该是驱动还没有好
全志的musb的usb部分中断清除标志位要通过再写入来清除
有的不用。试过国产替换的,硬件要改,但是软件不动
有匹配的,我用过
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.d2f12e8da8LGO4&id=566547808242&_u=7j91ik3adab
这个
只能说我当时买的时候是直接可以用的,不保证店家是否修改过
数码管字体通过图像处理识别的话相对容易,而且是发光的。
是的,上清单了....
@cgpsky
看上去好像还是要求dll有除了构造函数之外的,能够返回实例化好类地址的成员函数。
这种看上去就是任务堆栈设置小了
先引用原有的头文件,用C++封装一层,然后导出C接口。
有参考的实例么
一样可以,类似于组件(plugin)加载,明天附上代码
感谢,蹲代码(:
楼主想表达什么
@armstrong
感谢,我去学习下看看。不过好像和上面说的方式类似。windows下dll不知道有没有类似问题的解决方案
@armstrong
是最适合c。C++不知道linux后面会不会加入这种方面的支持
有个做法就是在动态库里面提供对应的类的创建和销毁函数,然后动态库里面实例化和销毁。在创建时候返回的是类的地址,然后自己在外部定义一个同样的类,根据地址偏移进行操作(不知道是否准确,有点c语言结构体的思维了,类的对象地址排布好像也是一样的吧)
现在由于不能修改dll,好像这个办法就行不通了
通常,动态库链接我们都是在编译时候就指定链接位置和链接库的名字。这个方式叫做隐式调用,最简单也是通常我们经常用到的一个方式。
但是往往 ,我们在做支持扩展插件so或者其他特殊应用的时候,会用到Linux提供的加载动态链接库的api ,就是dlopen dlsym dlclose dlerror等。
使用api 我们能够无需事先知道链接库的名字,只有程序在运行要用到动态链接库的时候,就去指定的插件目录查找存在的so文件,然后加载就好,只要提供插件的函数名和我们预期一样,那么就能够准确调用并运行得到自己想要的结果。这个方法在c 语言编译生成的动态链接库使用起来一点问题都没有
但是,在c++编译生成的动态链接库就不一样了,一个是c++支持函数重载,动态库中的名字是加入了标志着函数参数信息的magic字符。这个会导致我们在dlsym的时候,根本无法获取到对应的我们命名的函数。好在只要我们只要对函数符号进行查找,一样是能够解决这个问题的。 最最麻烦的问题是使用到了动态链接库的类,还有类的成员函数,我们在程序中要实例化类,对类的函数进行调用,拿到类的成员等等,到这一步就非常难搞了.....
有没有大佬能够指点一下,怎么才能够解决这个问题?
注:目前最麻烦的是插件的动态库不是自己编译的,无法通过加入一些函数来在动态库内部实例化类返回指针这种形式解决
感谢大佬又解决了一个问题,越来越方便了
感谢楼主的辛苦翻译。是时候转向kicad了
关注,我前面编译过也能跑了,赞
@微凉VeiLiang
老哥我想问一下 这个调色板的值 有什么标准的吗
就是用网上写好的模拟器颜色就好了。我们无非就是拿来改成RGB888 或者RGB 565.亦或是调换下B和R位置而已
可能是因为SetAddress那一部分,之前没有处理好。
本周在调一个开发板,重新把文件放到文件系统,然后打包后烧录。开发板开机后ssh 和tty 登录报错Login Correct ,以前一般输入完root 用户名回车就登录好了,但是这次烧录后发现输入完root,卡了1-2秒钟,然后直接报错Login Correct,如下图所示
然后输入其它的用户名,就会能够进入到输入密码这一步。
经过查看/etc/passwd 和/etc/shadow文件并无问题,root 用户是设置的免密码登录,那么是什么问题呢
经过查阅资料,和经验,有可能是权限问题。但是又不大敢确认,资料也有说是登录相关动态库缺失的。。单独尝试了好像没有问题
最后还是确定去比对一下之前备份的文件系统,通过ls -l 查看,的确新的文件系统的/etc/目录下的权限和以前的不一样,全都变成777了,而老的是各有区别的。
如下
真相大白了,就是权限问题,不知道什么时候把文件系统里面的/etc/都给变成777权限了。应该是因为系统检测到权限不对,为了系统安全就给屏蔽了登录功能,不过报错如果能够更加明晰一点就好了
记得以前其它开发板也有出现过su命令权限报错问题,说是运行su的用户组属性不对什么的,这一看就能知道是权限问题
不知道有没有其他人也会遇到同样的情况,网络上这个报错说是因为权限的人好像不是很多。。。希望本帖能够帮助到遇到同样问题的人
厉害,前排支持一下,楼主挺多开源项目
围观一下,点屏强芯
h264软解码移植了好几个,但是大都是base profile的。支持main profile的比较少。还有相关视频封装格式解析要移植,比较耗时
varzhou 说:下载来看了一下,很多so库依赖
是的,最后一个链接看起来像是针对 Windows 的,无论如何问题是存在的,有没有人在裸机中使用过 H264 硬件解码器?
我有在调,但是由于没有一个比较合适裸机用的解码前端,所以目前项目还是在停滞状态。
楼上说的对。有一个就是uboot保护了spl的代码和boot1代码。甚至像三星的芯片好像还有boot2
word 2016版本好像本身支持
直接作为ftp服务器,把固件拖进去就行了
感谢分享
一个lane就是一对数据线。有的摄像头是2lane或者4lane的。没有试过一个mipi接口接两个mipi摄像头
没有看懂。连接串口不打印是怎么供电的。连接usb能重新打印芯片信息不是等于这个供电才是真的供上电么
厉害,玩到芯片的性能极限。还可以运行GNGEO
A7是正宫,别忽略她就行,玄铁性能未测试,A72这种水平肯定达不到的,A53估计有可能
玄铁这么厉害的么,还以为是A7 A9的性能呢。那有点意思
正常的,想去掉可以加施密特触发器,就是原理上加一个迟滞比较
点赞,一直是f1c100s用pwm输出作为摄像头的mclk,pwm最大支持24Mhz输出
赞,显示效果上个月又调试了一下,发现有个寄存器需要调下,锯齿效果会好很多,晚点发出来
TVD_REG_BASE+0x001c 这个寄存器的bit0 要等于0.原来初始化写的0x0087002f改成0x0087002a 显示效果好很多
赞,显示效果上个月又调试了一下,发现有个寄存器需要调下,锯齿效果会好很多,晚点发出来
微凉VeiLiang 说:裸机和rtthread下搞过。裸机移植的nxp的usb host 协议栈
NXP的是参考的哪个芯片的资料,方便透漏下吗
厉害,感谢分享
裸机和rtthread下搞过。裸机移植的nxp的usb host 协议栈
是的,f1c100s的音频裸机驱动没找到参考,不知谁研究过这个问题,如果有参考的话,可以去写个真正的音频驱动
我之前调过,分享nes游戏模拟的里面就是用audio输出的
https://github.com/VeiLiang/BoloRTT/blob/master/bsp/f1c/drivers/drv_audio.c
是f1c100s么,那直接用音频输出好了。这个spwm好像怎么搞都是会有点沙的...
感谢楼主分享,XFEL是真的好用,配合这个加密真是完美啦
好东西,感谢xboot大佬分享裸机工程
欢迎大佬进驻
导联什么的
dotnet 在arm上一般用来跑什么程序,上位机?
赞,支持一下
赞,感谢楼主分享
插楼,前排支持一下
没有遇到过,帮顶
哈,还不如自制一个
驾驶行为检测?我租过gofun共享汽车,上面就有这种,举个手摸摸耳朵就说请勿接打电话:)
www.linaro.org
release.linaro.org
赞,f1c100s我也推荐这个,windows下也有,很方便。下载arm-eabi
关注,听说sdk都已经出来了
F1C100S应该是没有的,可以用spi falsh的id
补充一下原始设计稿,不是贴图喔,上面的界面是纯代码实现。
不懂就问,这个设计辅助工具是什么
如果感兴趣的人多的话,我可以再讲讲XUI的细节,先说个概括性的。
GUI实现分为三种设计模式:
1,保留模式,传统GUI,都是使用此方案,优点是成熟,缺点是开发繁琐
2,立即模式,诞生于游戏开发领域,解决游戏交互,xui就采用此模式,此模式优点,是代码量低,所想所得,灵活性强1,编写事情响应得心应手,缺点是纯代码,驾驭不了代码的新手,会退避三分
3,声明式,这个在web领域,如火如荼,什么VUE啥的,很现代,优点是,效果赞,赏心锐目,而且现代,缺点是,需要脚本语言配合,而且需要描述能力稍强点的语言,再有就是性能需求也是较高。嵌入式裸奔系统或者各种rtos没有见到过有这种的。不知以后会不会有这玩意儿。
给力,说的很到位。VUE开发有的,叫有嵌入式的框架叫EVM的一直在搞这个。看上去很不错,后面现代ui应该是越来越多是声明式了。主要是配合设计工具特别好用。感觉AWTK也算是吧
上面提示可能是找不到对应的字体,因为加载的资源是assets-mini.c的
想着加载标准的Default资源,然后发现过大,编译不下。只能再自己摸索下了
其中发现个问题,就是assets_default.inc里面的guage是错别字,资源文件是gauge
提示主题缺失的问题已解决。是要实现assets_init函数加载资源
现在又提示字体问题了,按道理说应该有加载了字体资源了
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_measure_text_default:303 condition(c != NULL && str != NULL && c->font != NULL) failed!
canvas_draw_text_impl:625 condition(c->font != NULL) failed!
还有一个问题就是AWTK Designer 提示联网失败,然后显示可以导入许可证,但是许可证不知道怎么下载
目前画面是一片黑色
无文件系统的ucos,基于X1500
跑的demo_ui_app.c。
主函数只调用gui_app_start(240, 320);
ratio=f -2143974832 0
Build at: Apr 22 2021 18:08:48
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
theme_find_style:104 condition(theme->data != NULL) failed!
x1:0,y1:0,x2:239,y2:319
nr:76800
x1:0,y1:0,x2:239,y2:319
nr:76800
x1:6,y1:76,x2:239,y2:202
nr:29718
x1:6,y1:76,x2:239,y2:202
nr:29718
x1:6,y1:76,x2:239,y2:202
nr:29718
能模拟成USB 摄相头 UVC 吗?
淘宝小淘气的工程有uvc,我没有在f1c100s上调过
还有就是这种绕线电感好像不是功率电感,感觉还不如层叠电感
不插卡sunxi-fel可以进入么。R11 和R12有没有贴错成小于100k的电阻
楼上说得在理,感觉现在东西都不好做
和灯光有关,灯光亮,增益设低效果会好
感谢分享,后面可能会用到
感谢分享,linux 相关操作 。真的不是常用的容易忘记,遇到的时候都是重新网上搜索
不知道帮顶。这个几个芯片有手册么
有没有模拟U盘的例子
目前没有,有空再移植分享下。mass storage 好像就几个命令。然后read10 write10对接好底层的存储设备就好了
是usb主机驱动吗?
这个是usb设备的驱动
这种专用芯片好像都很便宜
微凉VeiLiang 说:我移植了一个对接上rtthread,支持u盘和键盘
有没有办法从您那里获取源代码?
目前不便分享 lol
微凉VeiLiang 说:我移植了一个对接上rtthread,支持u盘和键盘
大神 求例程
目前不便分享,可以问下晕哥 lol
我移植了一个对接上rtthread,支持u盘和键盘
楼主好像是威建的?
关注SSD222
就这个风格来说我觉得楼上两个应该是同一个人
好东西,支持
好像开了网络就是这德性,无解
微凉VeiLiang 说:是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈
驱动那个帖子我看了,好像不管用。我看您也搞过nes移植,您那个是否有声音延迟问题呢?
恩,我移植的Infones没有发现有声音延迟的问题。就是声音上有些难听,还有就是像热血格斗的打斗的声音没有,跳跃的声音很怪
666,支持,速度可以优化下
有没有兴趣帮在我们新芯片上移植个NES,我们会提供开发板和资料
应该没有问题,什么芯片呢
是不是v3s linux驱动的问题?之前看论坛帖子好像有相关反馈
你好,我想请教个问题,我移植了infones到v3s,出现声音滞后画面大约5s的问题,请问该如何解决呢?这个问题困扰了我很久。。
V3s声音是不是linux驱动的问题,延迟应该和infones没有关系吧。不过infones的声音效果不好
厉害,前排支持分享
厉害,是个好东西
defe裸机调通过可以跑
金属表面打标这个不简单。不过预算都过万了,应该问题不大吧,不了解帮顶
F1C500S应该是兼容的吧,如果是这个封装还没有dram,那哪来的引脚外接sdram ==
感谢分享,如果还有得卖不错,可以跑Android
f1c100s裸机我移植了一个解码mp3的,核心汇编的,效果还可以
能输出 1920*1080@15hz吗?
没有问题
听大家这么一说,想问下,像nxp的yocto这种是什么,感觉像是buildroot
感谢分享,学习下
也可以参考我这个贴子 https://whycan.com/t_5913.html 的说明,修改InfoNES中调色板的数组NesPalette,改成RGB888的
大佬,我在你的菠萝派基础上制作了板子,现在发现运行一会儿就出现死机情况,而且pmic部分碰一下也会造成花屏死机问题,请问有什么经验指示吗
用的是之前的V1 V2版本么。5V处要加电容,不知道是不是这个原因,你可以加一个试下
修改了两个地方可以编译了,
第一、rtconfig.py文件中的第32行
PREFIX = 'arm-eabi-' 修改为 PREFIX = 'arm-none-eabi-'第二、libc_errno.h文件中的第32行
#include <asm-generic/errno.h> 修改为 #include <errno.h>编译成功
LINK rtthread.elf
arm-none-eabi-objcopy -O binary rtthread.elf rtthread.bin
arm-none-eabi-size rtthread.elf
text data bss dec hex filename
1717783 56628 6469356 8243767 7dca37 rtthread.elf
tools/mksunxi.exe rtthread.bin
bootloader size= 2200
The bootloader head has been fixed
scons: done building targets.
感谢分享 arm-none-eabi编译器的编译经验
工程是带sd卡读写的,有sd卡的话会挂载文件系统到/mmc目录,命令行下测试就好
为啥编译不过呢
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\Apps\demo.o
Error in calling:
arm-eabi-gcc -o "build\applications\Apps\demo.o" -c -mcpu=arm926ej-s -ffunction-sections -fdata-sections -Wall -O2 -DHAVE_CCONFIG_H -DRT_USING_NEWLIB -I. -Iapplications -Iapplications\Apps -Ibootloader -Idrivers -Ilibcpu -Ipackage -Ipackage\infones -Ipackage\jpgdec -Ipackage\lvgl -Ipackage\lvgl\porting -Ipackage\lvgl\src -Ipackage\lvgl\src\lv_core -Ipackage\lvgl\src\lv_draw -Ipackage\lvgl\src\lv_font -Ipackage\lvgl\src\lv_hal -Ipackage\lvgl\src\lv_misc -Ipackage\lvgl\src\lv_objx -Ipackage\lvgl\src\lv_themes -Ipackage\vnes -ID:\RTT\BoloRTT-master\include -ID:\RTT\BoloRTT-master\components\dfs\include -ID:\RTT\BoloRTT-master\components\dfs\filesystems\devfs -ID:\RTT\BoloRTT-master\components\dfs\filesystems\elmfat -ID:\RTT\BoloRTT-master\components\dfs\filesystems\romfs -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\drivers\spi -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\drivers\spi\sfud\inc -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\drivers\usb\usbhost -ID:\RTT\BoloRTT-master\components\drivers\usb\usbhost\class -ID:\RTT\BoloRTT-master\components\drivers\usb\usbhost\core -ID:\RTT\BoloRTT-master\components\drivers\usb\usbhost\include -ID:\RTT\BoloRTT-master\components\drivers\include -ID:\RTT\BoloRTT-master\components\finsh -ID:\RTT\BoloRTT-master\components\libc\compilers\newlib -ID:\RTT\BoloRTT-master\components\libc\pthreads -ID:\RTT\BoloRTT-master\components\libc\time "applications\Apps\demo.c"
Exception: [Error 2] : No such file or directory
scons: *** [build\applications\Apps\demo.o] Error 2
scons: building terminated because of errors.
是在bsp/f1c目录下运行scons么
RGB565的配置用了RGB888的数据?
看这个意思是spi等数字接口可以任意配置在一组脚上输出?能否配置多组外设,比如说我只用串口,我全部io都拿来做串口
没有看懂,别的芯片要传视频给v3s?V3s的mipi csi 驱动摄像头是ok的
面向的应用应该不大一样
感谢分享,给力,这个版本还是非常流畅的
如果只想下载模拟器代码,可以本站链接下来 vnes.rar
关于文件夹命名,原版文件夹就是叫做NES的,加了个v区分下其它移植的模拟器,所以命名就变成vnes了,谅解
本模拟器在项目的目录路径:BoloRTT/bsp/f1c/package/vnes/
接上篇:F1C100S玩游戏系列-FC红白机Nes模拟器(一)-移植InfoNes到BoloRTT工程,带Audio驱动,支持声音
先上工程源码链接
https://github.com/VeiLiang/BoloRTT
关于本次移植的模拟器
这个模拟器最早应该是正点原子网友ye781205看到PocketNester,然后想着跑到stm32f1上,把cpu模拟代码改写成汇编,然后跑起来,还带声音模拟,声音比InfoNes好很多。最后正点原子也完善了对应的mapper,使其可以运行更多的游戏。感谢原子哥,感谢ye781205大佬,使得stm32f1也能运行nes模拟,而且速度非常流畅
移植需要注意的地方
汇编部分:
原工程用的编译器是mdk的armcc,所以汇编的格式是armcc格式的汇编。我们移植过来的时候不能直接编译,需要经过较多需要修改的地方:
1.宏定义 MACRO MEND需要修改成.macro .endm
举例
MACRO
fetch $count ;//提取操作码 ;$标号 宏名 $参数1,$参数2,...
;//---------------------------------------------------------------------
ldr r0,clocksh ;//处理apu需要的时钟数
add r0,r0,#$count
str r0,clocksh
ldr r1,opz ;//获取代码跳转表地址
;//-------------------------------------------------------------------------
subs cycles,cycles,#$count*256;//CYCLE=256 ;// 3*256 正数或0就执行下2条指令
ldrplb r0,[m6502_pc],#1 ; //从存储器中加载字节到一个寄存器中 r0=操作码
; ldrpl pc,[m6502_optbl,r0,lsl#2] ;//r10 ********r0=r0x4***运行代码的地址**************************************
ldrpl pc,[r1,r0,lsl#2]
ldr pc,nexttimeout
MEND
需要修改成
.macro fetch count
//提取操作码 //$标号 宏名 $参数1,$参数2,...
//---------------------------------------------------------------------
ldr r0,clocksh //处理apu需要的时钟数
add r0,r0,#\count
str r0,clocksh
ldr r1,opz //获取代码跳转表地址
//-------------------------------------------------------------------------
subs cycles,cycles,#\count*256 //CYCLE=256 //// 3*256 正数或0就执行下2条指令
ldrplb r0,[m6502_pc],#1 //从存储器中加载字节到一个寄存器中 r0=操作码
// ldrpl pc,[m6502_optbl,r0,lsl#2] //r10 ********r0=r0x4***运行代码的地址**************************************
ldrpl pc,[r1,r0,lsl#2]
ldr pc,nexttimeout
.endm
2.EQU 需要改成.equ
举例
C EQU 0x01 ;//6502 flags 6502标志
Z EQU 0x02
I EQU 0x04
D EQU 0x08
B EQU 0x10 ;//(allways 1 except when IRQ pushes it)IRQ外部中断
R EQU 0x20 ;//(locked at 1)
V EQU 0x40
N EQU 0x80
改成
.equ C , 0x01 //6502 flags 6502标志
.equ Z , 0x02
.equ I , 0x04
.equ D , 0x08
.equ B , 0x10 //(allways 1 except when IRQ pushes it)IRQ外部中断
.equ R , 0x20
.equ V , 0x40 //(locked at 1)
.equ N , 0x80
3.SETA需要改成.equ
对于SETA 可以认为是编译时候要用到的宏变量,一样可以用.equ代替.通常是用于宏搭配着用
_type SETA _ABS
可以改成
.equ _type , _ABS
4.PROC 需要改成%function
例子
cpu6502_init PROC
;----------------------------------------------------------------------------
stmfd sp!,{r4-r11,lr}
ldr r10,=cpu_data ;读取地址
ldr r11,=NES_RAM ;r11=cpu_zpage
改成
.text
.global cpu6502_init
.type cpu6502_init, %function
.align 8
cpu6502_init:
//----------------------------------------------------------------------------
stmfd sp!,{r4-r11,lr}
ldr r10,=cpu_data //读取地址
ldr r11,=NES_RAM //r11=cpu_zpage
ldr r11,[r11] //NES_RAM用了指针
5. AREA rom_code, CODE, READONLY 改成 .text
AREA wram_globals0, DATA, READWRITE 需要改成 .data
6. RN需要改成.req
globalptr RN r10
globalptr .req r10
7.Map需要用对应的#define来解决。值得注意是有的指令可能不行,例如adr,需要改掉指令来实现对应的功能
对于汇编Map关键字的定义,可以想象成是结构体,然后访问成员的时候,对应就能够基于基地址偏移。这些是编译器提供的功能
8.DCD修改成.long
9.IMPORT修改成.extern
10.汇编中mov 的操作数有的在ARM9下不支持,需要分拆成两部分
11.原来的汇编是跑在stm32上的,是cortex-m架构,只支持thumb2不支持ARM指令,f1c100s是ARM9两种都支持,但是通常编译选项会关闭thumb指令或者说start.s没有允许thumb指令,所以源代码中的调用防止进入arm状态的地址偏移,可以去掉。
ldmfd sp!,{r3,lr}
//orr lr,#0x01 //lr最低位置1防止进入arm状态 //F1C100s 本来就是arm状态,需要注释掉这个指令 --By VeiLiang
12.注释不一样,ARMCC汇编格式注释符号为分号; GNU汇编格式为//或者@
C语言部分
对于在汇编中用到的变量,务必需要4字节或者8字节对齐,gcc利用 __attribute__ ((aligned (4)))。
如下
u8 PADdata0 __attribute__ ((aligned (8))); //手柄1键值 [7:0]右7 左6 下5 上4 Start3 Select2 B1 A0
u8 PADdata1 __attribute__ ((aligned (8))); //手柄2键值 [7:0]右7 左6 下5 上4 Start3 Select2 B1 A0
u8 *NES_RAM __attribute__ ((aligned (8))); //保持1024字节对齐
u8 *NES_SRAM __attribute__ ((aligned (8)));
u8* spr_ram __attribute__ ((aligned (8))); //精灵RAM,256字节
按键部分因为目前暂时没有按键,也是没有用上。按键读取函数为
//读取游戏手柄数据
void nes_get_gamepadval(void)
{
// u8 *pt;
// while((usbx.bDeviceState&0XC0)==0X40)//USB设备插入了,但是还没连接成功,猛查询.
// {
// usbapp_pulling(); //轮询处理USB事务
// }
// usbapp_pulling(); //轮询处理USB事务
// if(usbx.hdevclass==4) //USB游戏手柄
// {
// PADdata0=fcpad.ctrlval;
// PADdata1=0;
// }else if(usbx.hdevclass==3)//USB键盘模拟手柄
// {
// KEYBRD_FCPAD_Decode(pt,0);
// PADdata0=fcpad.ctrlval;
// PADdata1=fcpad1.ctrlval;
// }
}
演示
----------------------------------------------------------
----------------------------------------------------------
总结
总的移植下来,感觉学习到东西也蛮多。ARM转GNU汇编需要注意到的东西也比较多,稍有不慎就会data abort .不过出来的效果是真心不错,我还修改了对应的mapper,还有模拟的代码。让模拟器可以支持热血系列还有冒险岛系列运行。声音非常赞,我也移植了VirtualNes,对比发现本模拟器的声音可以和VirtualNes媲美,而且核心用的是汇编,跑在f1c100s上真的是丝滑,赞
致谢
感谢原子哥,感谢ye781205大佬,感谢晕哥,感谢rtthread团队
惯例
如果喜欢本项目https://github.com/VeiLiang/BoloRTT欢迎start fork 测试提交issue
如果觉得本项目对你有用解决了你的问题,欢迎点击我的个人网站用爱发电
以下由 @哇酷小管家 2021-06-03 加入
-----------------------------------------
不方便上github的朋友也可以通过本站下载: BoloRTT_git_full.7z
感觉可以,就是声音如果是带dac会好很多
还有这回事,ddr3为什么会慢过ddr2
学习了。特别喜欢mit,哈哈
不知道楼主驱动8080屏成功了没,感谢分享
直接读 寄存器 ,基地址 0x01c23800
我说的是唯一id读这个位置的寄存器。好像是有个96位还是128位。
直接读 寄存器 ,基地址 0x01c23800
围观,rt-smart 第三方框架如果支持得好的话就给力,例如SDL
Nice,感谢分享经验
没有玩过,只玩过菠萝派 bolopi 哈哈
好东西,顶起来
不大了解,难道是cbt6?
热血系列小时候很爱玩啊,游戏机制很不错(打的好小BOSS会投降认输),打到最后是两只老虎。
是的,还有冒险岛,洛克人,嘿嘿
现在都这么贵了么。那没法玩了
还有就是说一下显示相关的,一般模拟器计算出来显示的是调色板的索引。一共常规来说就是64色的调色板
然后我们跑的时候通常会有的屏幕是RGB565,有的屏幕RGB888.我们就可以自己修改调色板的内容进行适配。
在InfoNES中,调试板的数组是NesPalette。目前BoloRTT里用的是RGB888的
先上工程源码链接
https://github.com/VeiLiang/BoloRTT
-------
关于InfoNES
InfoNES是一个比较早的nes模拟器了,优点是支持的mapper比较多,代码十分方便移植,虽然原版代码是cpp,但是完全没有用到任何的c++的特性,直接把后缀名字改成c就可以正常编译了。缺点就是声音效果比较差,几乎就是听个响,然后很多音效都没有了,例如热血格斗的打斗声,跳起来的声音也非常怪;还有个缺点就是虽然支持的mapper多,但是有些游戏还是会出现不能运行或者画面错乱的情况。不过瑕不掩瑜,因为移植起来真的非常简单,所以在各个平台都会有InfoNES的移植教程,致敬
移植
直接把infoNES的相关文件改成.c后缀就好。然后实现几个接口函数
显示画面函数 void InfoNES_LoadFrame()
读取按键键值 void InfoNES_PadState( DWORD *pdwPad1, DWORD *pdwPad2, DWORD *pdwSystem )
memcpy void *InfoNES_MemoryCopy( void *dest, const void *src, int count )
memset void *InfoNES_MemorySet( void *dest, int c, int count )
调试打印错误信息 void InfoNES_DebugPrint( char *pszMsg )
声音初始化 int InfoNES_SoundOpen( int samples_per_sync, int sample_rate )
声音播放 5个声道 void InfoNES_SoundOutput(int samples, BYTE *wave1, BYTE *wave2, BYTE *wave3, BYTE *wave4, BYTE *wave5)
下面是BoloRTT下实现的代码,因为板子没有游戏按键,所以就没写按键代码
/* Transfer the contents of work frame on the screen */
void InfoNES_LoadFrame()
{
unsigned int x,y;
#ifdef DISP_USE_ARGB_32
unsigned int *src,*dst;
src = (unsigned int *)WorkFrame;
#else
unsigned short *src,*dst;
src = (unsigned short *)WorkFrame;
#endif
for(x=0;x<NES_DISP_HEIGHT;x++)
{
for(y=0;y<NES_DISP_WIDTH;y++)
{
FrameBuffer[x*480+y+160] = *src;
src++;
}
}
// for(x=0;x<NES_DISP_HEIGHT;x++)
// {
// dst = FrameBuffer + (NES_DISP_HEIGHT-1-x);
// for(y=0;y<NES_DISP_WIDTH;y++)
// {
// *dst = *src;
// dst += 480;
// src++;
// }
// }
}
/* Get a joypad state */
void InfoNES_PadState( DWORD *pdwPad1, DWORD *pdwPad2, DWORD *pdwSystem )
{
//add key ctrl in here...
}
/* memcpy */
void *InfoNES_MemoryCopy( void *dest, const void *src, int count )
{
return memcpy(dest,src,count);
}
/* memset */
void *InfoNES_MemorySet( void *dest, int c, int count )
{
return memset(dest,c,count);
}
/* Print debug message */
void InfoNES_DebugPrint( char *pszMsg )
{
}
/* Wait */
void InfoNES_Wait()
{
}
/* Sound Initialize */
void InfoNES_SoundInit( void )
{
}
/* Sound Open */
int InfoNES_SoundOpen( int samples_per_sync, int sample_rate )
{
f1c100s_audio_config(1,16,sample_rate);
f1c100s_audio_open(samples_per_sync*2);
return 0;
}
/* Sound Close */
void InfoNES_SoundClose( void )
{
}
WORD final_wave[367*5];
/* Sound Output 5 Waves - 2 Pulse, 1 Triangle, 1 Noise, 1 DPCM */
void InfoNES_SoundOutput(int samples, BYTE *wave1, BYTE *wave2, BYTE *wave3, BYTE *wave4, BYTE *wave5)
{
int i;
for (i = 0; i < samples; i++)
{
final_wave[i] = (wave1[i]*32 + wave2[i]*32 + wave3[i]*32 + wave4[i]*32 + wave5[i]*32);
}
audio_pcm_play(final_wave,samples*2);
}
总结
总体下来,InfoNES还是不错的,可以跑热血系列游戏,然后就是声音真的比较差,聊胜于无吧。
后面我会继续发布正点原子开发板上跑的NES模拟器,(基于大佬ye781205 编写)cpu实现是汇编语言的,我移植到了BoloRTT上,核心也是改过的可以跑在ARM9下的汇编,速度那叫一个溜,声音效果也非常完美。敬请期待
不要脸打个广告
BoloRT工程,完美跑这bolopi上 https://github.com/VeiLiang/BoloRTT
欢迎start,fork
用爱发电
感谢楼主分享,话说一玩就是买一盘芯片来玩么
32Kb也能跑蓝牙协议栈么?
没有调过主机的uvc类,帮顶
什么如何,很便宜么,便宜拿来拆屏用:)
我可以集成到DKTool吗
嘿嘿,完全可以
裸机上玩过,不大了解linux的
raspberryman 说:usb插入电脑,显示要安装驱动程序,就说明板子正常。
不需要前置固件,里面开机固化的ROM与电脑USB通讯可以完成烧写。
现在情况是连上电脑一点反应没有,
晶振起振了24MHz
ID脚是悬空的
复位C104+R103
还有什么地方要检查
能不能是供电不行? 我几路都是1117出的
检查VAR 的电阻 是不是200K
哪位大哥移植到Arm9上。
看了一下相关视频和资料,rtthread smart把一些基本的启动文件 mmu都整好作为libcpu文件夹里面了。移植起来好像更加简单化了
如果后面rtthread smart能够把一些跨平台的框架移植整合进去,感觉作为一个类似于轻量级的linux系统,用起来是非常不错的
感谢分享经验,解码的f1c好像都是mb32 title格式
微凉VeiLiang 说:田埂上的梦 说:微凉VeiLiang 佬大这么晚了还没睡又在研究啥新驱动
移植了下nes,还有声音驱动。H3 跑起来应该也是挺烫手的吧
声音驱动好裸奔不 最近也要搞
主要是dma整好,bsp linux里面有声音的驱动 sound目录里面
楼主所描述的心理活动,仿佛看透了我的内心!
同样的感觉哈哈,裸机玩多了。有有意识地避开linux
这是假货还是芯片指标不稳定呢?
可以用多个设备,外设好像支持4个片选
好东西,不过论坛好像没有在线增长积分的机制
微凉VeiLiang 说:EE 说:楼上电路图的4脚就是用来去除 pop 的吧,接一个电容到地?没有整过 PAM 家的片子,对一下 DS,class-d通常都好解决吧
嗯,加功放的应该可以这样解决,延后使能
耳机的话,不知道能不能用 NMOS并在耳机两个脚作为开关(短路),然后也用 RC 做个延时。好久前,好像听过类似的技巧性做法。具体是什么电路就没有注意了。
是个好主意,等电平衡后再去掉短路回路
另外 你这是上电就璞声还是软件初始化的时候才璞声?如果是软件初始化有璞声,看下200s 1.2版手册第157页的图,有些mixer开关可能要先设置下好平衡直流电压。
初始化后有pop声。感谢提供信息,我去调下看看
谢谢 微凉VeiLiang
跟据你的提示,把 M-win32.rar中的libwinpthread-1.dll放到winodws目录内就好了:)
嗯嗯,这个其实在cmd里面运行scons应该会弹窗提示缺少libwinpthread-1.dll。但是不知道为什么你的已经在M-win32目录下还会提示错误
楼上电路图的4脚就是用来去除 pop 的吧,接一个电容到地?没有整过 PAM 家的片子,对一下 DS,class-d通常都好解决吧
嗯,加功放的应该可以这样解决,延后使能
这事能否硬件上解决 功放电源上电时软启动
f1c耳机输出功率多大 能带个小扬声器做音效么?目前我加了个功放 还没调到那里 DAC接的是HPR
我接的是耳机,可以很好驱动起来。较小扬声器可能问题不大
因为是直驱耳机,所以不知道去除上电璞声音一般是怎么去除的
v_8787 说:微凉VeiLiang 说:看看是不是下面选项设置不对
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},现在的提示变成了
C:\BoloRTT\BoloRTT\bsp\f1c>scons -j4
scons: Reading SConscript files ...
scons: done reading SConscript files.scons: warning: you do not seem to have the pywin32 extensions installed;
parallel (-j) builds may not work reliably with open Python files.
File "C:\Python27\Scripts\scons.py", line 204, in <module>
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\Apps\demo.o
CC build\applications\Apps\UartCursor.o
CC build\applications\main.o
scons: *** [build\applications\Apps\demo.o] Error -1073741515
CsC build\bootloader\exception.o
cons: *** [build\applications\Apps\UartCursor.o] Error -1073741515
scons: *** [build\applications\main.o] Error -1073741515
scons: *** [build\bootloader\exception.o] Error -1073741515
scons: building terminated because of errors.C:\BoloRTT\BoloRTT\bsp\f1c>
麻烦大佬再看看怎么回事,谢谢
感觉上像是编译器路径没有设置好,看看bsp\f1c\rtconfig.py文件设置编译器设置好了没
当Windows试图加载它无法识别为DLL库或者运行不能够正常识别的可执行程序时,会发生此-1073741515错误,
遇到了同样的问题,请问你是怎么解决的?
v_8787 说:微凉VeiLiang 说:看看是不是下面选项设置不对
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},现在的提示变成了
C:\BoloRTT\BoloRTT\bsp\f1c>scons -j4
scons: Reading SConscript files ...
scons: done reading SConscript files.scons: warning: you do not seem to have the pywin32 extensions installed;
parallel (-j) builds may not work reliably with open Python files.
File "C:\Python27\Scripts\scons.py", line 204, in <module>
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\Apps\demo.o
CC build\applications\Apps\UartCursor.o
CC build\applications\main.o
scons: *** [build\applications\Apps\demo.o] Error -1073741515
CsC build\bootloader\exception.o
cons: *** [build\applications\Apps\UartCursor.o] Error -1073741515
scons: *** [build\applications\main.o] Error -1073741515
scons: *** [build\bootloader\exception.o] Error -1073741515
scons: building terminated because of errors.C:\BoloRTT\BoloRTT\bsp\f1c>
麻烦大佬再看看怎么回事,谢谢
感觉上像是编译器路径没有设置好,看看bsp\f1c\rtconfig.py文件设置编译器设置好了没。或者说是你设置的编译器gcc.exe运行依赖东西没有
微凉VeiLiang 说:v_8787 说:大佬,问一下,提示如下内容
C:\BoloRTT>scons -j4scons: *** No SConstruct file found.
File "C:\Python27\scons\SCons\Script\Main.py", line 933, in _main需要怎么解决?
看看是不是下面选项设置不对
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},现在的提示变成了
C:\BoloRTT\BoloRTT\bsp\f1c>scons -j4
scons: Reading SConscript files ...
scons: done reading SConscript files.scons: warning: you do not seem to have the pywin32 extensions installed;
parallel (-j) builds may not work reliably with open Python files.
File "C:\Python27\Scripts\scons.py", line 204, in <module>
scons: Building targets ...
scons: building associated VariantDir targets: build
CC build\applications\Apps\demo.o
CC build\applications\Apps\UartCursor.o
CC build\applications\main.o
scons: *** [build\applications\Apps\demo.o] Error -1073741515
CsC build\bootloader\exception.o
cons: *** [build\applications\Apps\UartCursor.o] Error -1073741515
scons: *** [build\applications\main.o] Error -1073741515
scons: *** [build\bootloader\exception.o] Error -1073741515
scons: building terminated because of errors.C:\BoloRTT\BoloRTT\bsp\f1c>
麻烦大佬再看看怎么回事,谢谢
感觉上像是编译器路径没有设置好,看看bsp\f1c\rtconfig.py文件设置编译器设置好了没
前言
最近在捣鼓F1C100S的声音部分。然后打样了一个BoloPi的AV部分扩展板。然后参考了几个公版的电路和说明,发现最好的办法还是输出端不要电容,然后能够去掉音频外设上电瞬间的璞的声音,而且还有比较好的低音效果,因为输出电容相当于一个高通滤波器,而且往往耳机的内阻只有16-32欧姆,需要电容几百uF才能够做到100Hz一下的信号通过。
问题
目前我做的板子是没有输出电容的(输出电容处焊接了47欧姆的电阻,开始焊接的是0欧姆,发现会一直震荡,耳机发出哒哒哒的声音。后面焊接了33欧,不振荡了,但是在声音过大的时候,会发出达达的声音。最后测试把声音调小,能够解决问题,然后把33欧改成47欧,在最大音量的时候也没有问题了。) 发现开机的时候还是会有噗的一声。这个问题不知道怎么解决,有没有人搞过声音部分电路呢,开机璞的声音应该如何解决 ,接的耳机为AKG的K450
具体电路如下所示
具体参考以下几个电路和说明
kicad是不是有很多3d库,自带的
楼上都是晕哥小号。当然我也是
学习了,感谢分享经验
感谢分享,如果晕哥可以把makedown支持下发帖就方便了
这个好 有插件能做单步调试吗 还有用python3可以不
目前没有,理论上可以利用jlink建立gdb服务器,然后vscode 进行调试
大佬,问一下,提示如下内容
C:\BoloRTT>scons -j4scons: *** No SConstruct file found.
File "C:\Python27\scons\SCons\Script\Main.py", line 933, in _main需要怎么解决?
看看是不是下面选项设置不对
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},
主要还是看生态链。加油,支持rtthread
终于码完了,睡觉去
目前经常用到的系统还是Windows,开发一些嵌入式芯片还需要用linux,每次打开虚拟机都要卡好一阵子(原谅我的渣渣开发机)。之前了解到提供编译工具链的组织linaro(官网www.linaro.org)有windows下开发的编译工具。所以果断想着把一套开发的环境整到windows上来,所以下载工具链和查找对应工具开整。
需要准备的软件包:
1.交叉编译工具链gcc-linaro-5.3.1-2016.05-i686-mingw32_arm-eabi.rar(官网下载)
2.M-win32 用于在windows上支持make和makefile需要用到的一系列linux下的命令令,像rm cp 等(坑网下载M-win32.rar)
3.python-2.7.10 Python 2.7 windows下的安装包,rtthread系统的构建工具scons需要Python的支持(坑网下载python-2_7_10.rar)
4.scons-3.1.1 rtthread实时操作系统的代码构建工具scons 的安装包(坑网下载scons-3_1_1.rar)
5.Visual Studio Code 微软开源的代码查看编辑工具简称VS Code,支持非常多的插件,支持跨平台(官网下载)
把交叉编译工具链gcc-linaro-5.3.1-2016.05-i686-mingw32_arm-eabi.rar解压到电脑的目录下,例如“E:\ gcc-linaro-5.3.1-2016.05-i686-mingw32_arm-eabi”路径下。
双击安装python-2.7.10.msi,把python2.7安装到系统的默认目录” C:\Python27”下。并且把“C:\Python27”路径和“C:\Python27\Scripts\”路径加入到系统的环境变量path下面。Windows 更新系统环境变量需要重启电脑。能在cmd 中输入python运行能进入python环境就算python安装成功,并且环境变量添加正确。
解压scons-3.1.1.rar到C:\scons-3.1.1目录下,接下来有两种方法安装scons。一个是,按下快捷键微标Win+R弹出运行,输入cmd点确定打开windows的命令行,输入cd C:\scons-3.1.1命令进入到scons的安装目录下,最后输入python setup.py install 命令进行scons的安装。另外一种方法是,在C:\scons-3.1.1目录下创建一个文本文件,输入内容python setup.py install 另存为install.bat文件。然后双击install.bat,即可完成scons的安装,安装完毕后,会在“C:\Python27\Scripts\”目录下产生几个scons命名的脚本文件。
根据网上教程安装VS Code到windows上。然后打开VS Code
点击插件图标,搜索并安装插件C/C++ 0.28.3 和 C++ Intellisence 0.2.2.如下图所示
点击菜单栏File-OpenFolder,在弹出的窗口中选中BoloRTT工程代码目录,点选择文件夹。此时已经把工程代码添加到VS Code中了,如下图所示
点击打开工程目录下bsp\f1c\rtconfig.py文件。把编译工具链的路径改成第一步解压工具链的路径。注意此处只要在路径后添加\bin即可,编译的前缀“arm-eabi-”在文件的PREFIX 项中写了。
例如 EXEC_PATH = r'E:\toolchain\gcc-linaro-5.3.1-2016.05-i686-mingw32_arm-eabi\bin' (r代表字符串不进行转义操作)
在已经解压好的BoloRTT工程代码目录下建立一个名字为“.vscode”文件夹,然后里面添加一个命名为”tasks,json”文件,文件内容如下
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "C/C++: arm-eabi-gcc build active file",
"command": "scons",
"args": [
"-j8",
],
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},
"problemMatcher": {
"fileLocation": ["relative", "${workspaceFolder}\\bsp\\f1c\\"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "sunxi-fel download bin file",
"command": "${workspaceFolder}\\bsp\\f1c\\tools\\sunxi-fel.exe",
"args": [
"-p",
"spiflash-write",
"0x0000",
"rtthread.bin",
],
"options": {
"cwd": "${workspaceFolder}\\bsp\\f1c",
},
"group": {
"kind": "test",
"isDefault": true
}
}
]
}
简单解释一下
tasks.json文件主要是用于创建一个任务,任务内容为编译工程。其中文件内容中的"type": "shell",表明任务需要调用命令行
"command": "scons",代表的是调用命令行后运行的命令为scons,此处直接写scons是因为前面第二步中已经把scons脚本所在的python脚目录加入了环境变量。
"args": ["-j8",],表示的是命令后面带的参数为 -j8 。连起来就是linux 下 scons -j8的意思。是为了能够调用多核cpu进行编译。
"options"选项里的cwd选项则是标记着命令行从工程的那个目录开始运行,我们都是在工程目录下的bsp\f1c的文件夹里面运行scons的,所以这里写"${workspaceFolder}\\bsp\\f1c "即可。
"problemMatcher"选项则是为了把编译过程中命令行输出的结果解析然后把warning和error添加到VS Code的PROBLEMS选项卡中,方便查看编译出错的原因。
第一个任务是系统默认任务用于编译,后面一个任务是用于烧录
直接按快捷键Ctrl+Shift+B进行默认任务-编译,或者可以点击菜单栏的Terminal-Run Build Task,在VSCode的中间位置会出现一个选框,要求选择需要运行的task。
以上即完成了F1C100s在Windows下用VS Code开发的环境搭建,好好体验在windows下开发的便捷吧
附上工程代码BoloRTT.rar
附上工程代码github连接https://github.com/VeiLiang/BoloRTT,后期会更新各种驱动,对你有帮助的话希望可以帮忙点个Start
注:jpeg解码为打包成静态库,默认解码会带whycan.com字样,仅供测试用。
感谢Rtthread团队,开发了一个特别好用的嵌入式实时系统。
感谢ntmusic网友,本BoloRTT基于工程基于RTThread的F1C100s开发(带boot启动+硬件多图层+硬件游标+LVGL+SDIO)的基础上修改和增加代码
感谢晕哥提供的交流平台
如果本项目对您有帮助欢迎点击www.bolopi.com进行打赏
微凉VeiLiang 说:田埂上的梦 说:v3s 声音通了?暂时给我的感觉没有v3s烫
是F1C100s的声音,V3s没有看
大佬,F1C100S NES有声音了吗
有了,我移植了infones 和 正点原子论坛ye781205大佬的模拟器,发现infones的声音真心不行,魂斗罗的爆炸声,热血格斗的打斗声都没有。还是ye781205的模拟器好,mapper修改一下也能运行不少游戏了
好东西,不知道是不是完美的转,像mach3的控制板可以用么
楼上说得对,qfp的引脚没有这么多脚引出
微凉VeiLiang 说:田埂上的梦 说:微凉VeiLiang 佬大这么晚了还没睡又在研究啥新驱动
移植了下nes,还有声音驱动。H3 跑起来应该也是挺烫手的吧
v3s 声音通了?暂时给我的感觉没有v3s烫
是F1C100s的声音,V3s没有看
微凉VeiLiang 说:软解还是硬解。硬件应该30fps完全没有问题
看了很多遍帖子,鼓捣不出来硬解,也有人说nano搞不动硬解,说别人的那是v3s
理论上应该可以吧,毕竟唱戏机主控,jpeg解码是ok了
感谢分享
路过帮顶,新唐有bga封装的么
微凉VeiLiang 佬大这么晚了还没睡又在研究啥新驱动
移植了下nes,还有声音驱动。H3 跑起来应该也是挺烫手的吧
哪里可以买?
歪朵拉之前不是做过么,听说是阉割了网口,引出了lvds的V3S
软解还是硬解。硬件应该30fps完全没有问题
厉害了,前排支持。膜拜大佬
pcb logo 和linux有什么关系,哈哈
前排支持大佬填坑
用的Linux5.2,闪迪的U盘,读U盘速度在11.98MB/s,写U盘在4.236MB/s,这速度太慢了,想问下怎么样可以提高U盘读写速度
![]()
![]()
这还慢??很不错了
cvbs可以读入后通过USB传出去吗
完全可以
厉害了,非常方便
学习了,感谢分享。很方便
厉害厉害,这样非常方便,不用手敲了
感谢分享,melis各个驱动都非常全
能说一下价格不?
淘宝好像5块钱
有板子或者芯片卖么
前排支持xboot大佬
好像也是非常便宜,期待玩起来
直接循环异或好了,速度快
微凉大侠,研究太深入了,感觉全志的门快被你打开了
话说,usb主机驱动,有没有什么参考的好办法,真的只能看musb那个资料吗???
usb主机之前调出来了,参考bsp linux。然后musb的手册作为辅助
抱歉,我无法下载。你能把它放在你的github上吗?
为什么下不了,应该积分够了吧
致谢
xboot提供的xboot项目https://github.com/xboot/xboot
达克罗德 的裸机工程 F1C100S裸奔framebuffer+PWM+GPIO驱动
微凉VeiLiang 说:mcd12 说:你好. 微凉VeiLiang 谢谢。你发射裸机了吗?
TVD 我已经调好能出图了。裸机,还有rtthread
你好. 感谢您的回答。我刚开始使用rtthread。你能帮我吗?
裸机的代码我发帖了,希望能帮到您
https://whycan.com/p_56079.html#p56079
老早就开始调F1C的TVD了。当时查找了好多资料,发现资料比较少,查找到csdn的一片文章有写A10/A20的TVD驱动代码介绍。
然后赶紧copy下来,编写了驱动的大概。然后发现并不能用,中断都能不能进入(经常调驱动,个人认为,一个外设,如果调到能够进入中断,意味着已经成功一半了,哈哈)
后来看了下melis的tvd.drv(这个是melis里面编译成动态库的格式,需要通过melis的专门机制去加载的),里面的地址和A20完全不一样。于是乎就自己一个一个对代码的对应数值。整理了一个寄存器对照表,然后一顿操作,发现能够进入驱动了,嘿嘿
赶紧把数据显示一下,有些东西显示,但是画面不对,还有就是颜色也不对,离正常的画面还是差很远
后面又隔了很长一段时间,直到有一天查找资料查找到R40i竟然有对TVD寄存器进行介绍,就是下面这个
Allwinner_R40_User_Manual_V1_0.pdf
然后仔细看了一下里面的寄存器,对照一下之前的寄存器对照表,发现R40和A20还有F1C100s都不一样。。。。。没辙,只能自己摸索了,还是继续参考tvd.drv里面的汇编进行对应配置的修改,同时也参考github网上的sunxi linux资料。
经过几天晚上的比对修改,画面终于显示了,还移植了个YUV420转RGB的代码。整了好一会颜色。出来的效果如下(因为顺手的就是这个牌子,并不是为了暗示什么哈,,,逃走()
目前还有些显示的问题,就是显示有锯齿,不知道是不是因为隔行和逐行配置的问题。后面也没有空再研究了,发出来给大伙探讨探讨,解决了可以发在坑网里面,又可以水一贴
附上当时整理的对应列表
F1C100S 和A20 TVD寄存器对应关系
0x0F08,0x0008
0x0F0C,0x000C
0x0F10,0x0010
0x0F14,0x0014
0x0F18,0x0030
0x0F1C,0x001C
0x0F24,0x0024
0x0F28,0x0028
0x0F2C,0x002C
0x0F44,0x0044
0x0F4C,0x004c
0x0F54,0x0054 [不确定]
0x0F6C,0x006C
0x0F74,0x0074
0x0F80,0x0080
0x0F84,0x00840x000C,0x0018
0x0014,0x00340x008c,0x0134
0x0088,0x0130
0x0E2C,0x52C
0x0094,0x0140
0x009c,0x01480x0080 //y 通道地址?
0x0084 //U 通道地址?
你好. 微凉VeiLiang 谢谢。你发射裸机了吗?
TVD 我已经调好能出图了。裸机,还有rtthread
微凉VeiLiang 说:mcd12 说:你好. 请问,f1c100s:tvd寄存器等于A20吗
不等的,寄存器的位置不一样
谢谢。 在哪里可以找到f1c100的TVD控制寄存器的完整列表?
F1C100S 和A20 TVD寄存器对应关系
0x0F08,0x0008
0x0F0C,0x000C
0x0F10,0x0010
0x0F14,0x0014
0x0F18,0x0030
0x0F1C,0x001C
0x0F24,0x0024
0x0F28,0x0028
0x0F2C,0x002C
0x0F44,0x0044
0x0F4C,0x004c
0x0F54,0x0054 [不确定]
0x0F6C,0x006C
0x0F74,0x0074
0x0F80,0x0080
0x0F84,0x0084
0x000C,0x0018
0x0014,0x0034
0x008c,0x0134
0x0088,0x0130
0x0E2C,0x52C
0x0094,0x0140
0x009c,0x0148
0x0080 //y 通道地址?
0x0084 //U 通道地址?
参考这个,去年我整理的
mcd12 说:微凉VeiLiang 说:不等的,寄存器的位置不一样
谢谢。 在哪里可以找到f1c100的TVD控制寄存器的完整列表?
不就是1楼这个吗?只是基地址不同而已.
晕哥 说:本站下载: A20_User_Manual_2013_03_22.pdf
这里面有详细的 TVE/TVD 寄存器定义.
不一样的,偏移也不一样
你好. 请问,f1c100s:tvd寄存器等于A20吗
不等的,寄存器的位置不一样
esp的 idf 做的不错, 蛮工整的
我ESP8266用RTOS SDK感觉每次编译卡半天,每次都从github上查看获取更新,特别不爽快。好像跟编译工具链又密切相关。还是用的不如nonos sdk顺畅
整个环境整好久
不明觉厉,是哪个东西呢
应该都会,阻塞的是当前线程。有的soc有的寄存器不加延迟一直读甚至还会卡死在里面。。。。。一般加延迟函数,然后做好超时退出。
九重天 说:https://whycan.com/files/members/5266/QQ截图20201108214323.png
可以烧录一个整体 img 文件吗?
可以的,就是磁盘烧录。我把源码发出来,
这个工具是之前做v3s的时候,因为用到nand。然后参考晕哥的帖子
V3s/S3/f1c100s通过USB启动Linux,并把SD NAND/TF卡挂载为U盘, 可以dd或Win32DiskImager任烧写
通过调用脚本烧录然后跑linux,启动完成后把nand挂载u盘,然后用Win32DiskImager烧录。
发现Win32DiskImager会把本地的硬盘也显示出来,这个时候如果不小心选错的话,后果非常严重。心想着就自己做个工具,保险一点。顺便把脚本启动也一并做进去了,通过C#调用
做好的工具如下图
1.烧写的盘符为所需要烧写的盘符地址,默认会选择小于10GB的U盘或者硬盘,而且盘符包括Linux字样,具体可以看源码实现
2.第一阶段boot,指的是spl的boot。可以自己做nand boot驱动,利用xoot 精简
3.选择需要跳的page大小,如果用W25N01GV选择跳2K。意思是页大小,为什么说是跳呢,全志的brom里面默认一个页就只读1024byte,如果一个nand的页是2K,也是只读前面的1K。所以烧录时候要对应把SPL数据拆开1K,1K地放入nand的页中。
4.第二阶段的boot。第二阶段boot一般是自己拿来做bootloader,烧录完BootLoader后面app的升级就不需要这个工具了,自己做对应BootLoader的升级工具例如usb,或者网络tftp。很方便。当然,这个第二阶段boot也可以直接把APP烧录进去。
5.把设备进入sunxi-fel模式,点击烧录按钮,这个时候,软件会调用晕哥帖子给出的烧录脚本进行linux烧录并启动,烧录成功软件后会倒计时等待linux启动并挂载u盘。等待倒计时结束后就开始操作底层磁盘,把第一阶段boot和第二阶段的boot烧录到对应位置,默认这个软件第二阶段boot烧录位置是磁盘的0x10000位置 。具体可以看程序源码。
软件截图
直接上附件
编译好的软件
SPL_SPINand_烧录软件.rar
windows下sunxi-fel的驱动安装,zadig
zadig-2_3.rar
下面是源代码
SPL_Proc_For_SPINand.rar
注:
因为是底层磁盘操作,所以运行时候需要获取管理员权限
如果电脑插着有小于10GB的U盘或者硬盘,而且盘符包括Linux字样的不能 用本软件!
使用时候千万要小心看软件提示,不然烧录bin到硬盘的0扇区后果很严重!!!
用W25N01GV,选择跳2K
https://whycan.com/files/members/5266/QQ截图20201108214323.png
可以烧录一个整体 img 文件吗?
可以的,就是磁盘烧录。我把源码发出来,
微凉VeiLiang 说:悲剧,我都不大敢用,所以我自己C#搞了个小工具,过滤容量大的磁盘
大佬请分享 ~~~
这个帖子的回复 http://whycan.com/t_4814.html#p48524
参照晕哥的贴子已经成功把SPI NAND识别为U盘,通过Win32DiskImager烧录后不能启动系统
http://whycan.com/t_4814.html#p48524
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
重启大都是看门狗,除了像stm32这种有软重启指令的单片机
链接好像是有先后顺序的
悲剧,我都不大敢用,所以我自己C#搞了个小工具,过滤容量大的磁盘
感谢分享,有外壳的么
数值转字符串还没有尝试成功,str函数是通过参数返回的,有没有知道AD里面怎么用的方便告知下么
字符串转数值,我采用的办法是,字符串直接让它+0。就强制转换了。一样的,Val函数是通过参数返回的,不会在AD里面用
在我们用AD画板子的时候。不可避免的遇到一些标号或者说是丝印字符需要批量处理,例如标号前面统一加上某个字符串,亦或者需要往标号后面加一些递增的字符等等。
这个时候,可以利用AD的查找相似对象功能来进行筛选选中需要处理的字符,如下图
然后点击到对应要修改的属性选项,出现三个点的按钮,点击他,弹出公式编辑对话框,如下图
然后输入公式点击确定就ok。
函数公式为Pascal语言,可以到这个网站上去查找对应函数说明 https://www.templetons.com/brad/alice/language/language8.html
下面以一个例子说明下用法
复制粘贴后标号处理(好像也可以用特殊粘贴功能),如下图,粘贴后会有LED1_1等自动带的尾缀。
然后需要处理,前面已经是1-16了。后面要求从17开始一直编号编下去。
查找规律。第一列一直都是LED1_n,第二列是LED2_n.依次类推
那么规律就是LEDc_r.
我们可以从标号中提取出c和r。然后通过公式c*16+r就是目标标号
直接上公式(Copy(Copy(!,0,Pos(_,!)-1),4,2) + (Copy(!,Pos(_,!)+1,2)+0)*16)
如下图
公式中感叹号代表原来的标号,Copy函数Copy(str, pos, num)代表返回长度为num的字符串变量str的子字符串,从位置pos开始。如果pos大于字符串的长度,则返回空字符串(即长度为零的字符串)
经过处理后标号就变成纯数字的,如图
然后我们再用公式加上LED(为什么不直接在上面公式加上LED?因为好像数值转字符串我还没有尝试成功,str函数是通过参数返回的,在AD里面还不会用呢)
最后结果是这样
Over
感谢分享
关注,期待楼主好消息
微凉VeiLiang 说:可以配置的。不是io是寄存器。看看我之前的帖子
https://whycan.com/t_4778.html这个在Linux下怎样修改呀!
应该是在uboot下修改就好。找到对应的配置地方
可以配置的。不是io是寄存器。看看我之前的帖子
https://whycan.com/t_4778.html
解码我确定是可以的(裸机)。感谢楼主分享的编码经验
厉害了我的哥
前排支持大佬,敬佩xboot的开源精神
其实F1c100s 运行速度并没有特别快。还不带硬件浮点。不过我也奇怪为什么没人用,应该还是了解的人少吧
还有就是单拿浮点来运算评估不出cpu运算能力。
arm-linux-gnueabi-gcc -static -mcpu=cortex-a7 -mtune=cortex-a7 -mfpu=fpv4-sp-d16 -mfloat-abi=soft这里有问题。应该是-mfloat-abi=hard
记得之前一个C币都可以兑换10个下载分
可以参考linux 的代码。我已经裸机驱动了
关注,感谢分享。有没有可能实现裸机的编解码。我看了下代码,貌似编码的插件源码一个都没有
选的是 一/二维码全能有线-用于(收银/商品/多功能)HS26高速 那个套餐, 228元.
我拆了一下, 貌似用全志 F1C100s 方案,
现在有个棘手的问题, 每次上电重启之后, 要重插USB扫码器才行,
这个真是一个非常差的体验, 不知道应该如何修改?
通病了,usb部分处理不好。需要扫描枪找我
请问如何在svref不正常的情况下,用fel加载uboot?
我这边svref不正常,usb直接不识别,没法用fel工具啊
芯片是f1c100s
看看VRA2,VRA1的电阻,要改成200K
厉害了,感谢分享。
合并BootLoader后移植达克罗德大神的USB驱动, 烧写到SPI启动, USB最多一次性只能接收8字节及以下的长度的数据,超过8字节, 串口助手就卡死了,不能正常发送 ,但是将代码烧写到DRAM上然后从DRAM开始运行就不存在这种问题,不知道是啥原因。
看帖子后面,有解决的说明。是端点的sram fifo 配置缺少了
感谢楼主分享,希望尽快突破USB HOST
host已经ok了的
用的什么工程跑的裸机
已经解决,现在来说明下解决方案
其实是有寄存器控制的,不是在EMAC的寄存器里面,而是在sys ctrl的寄存器里面
代码的话在sun8i_emac_set_syscon_ephy里面加入*reg |= H3_EPHY_LED_POL;
寄存器位置在0x01c00030 EMAC-EPHY Clock Register
直接叫供应商烧录好Flash
感谢分享,之前也搞过SSD2828 来点mipi
感谢分享,顶起
基本像musb的寄存器,只是寄存器偏移不一样,还有就是中断需要写入才清除中断标志位
musb_programming_guide.pdf
好东西,感谢分享。正准备编译,发现有编译好的,太好了
分享一个STM32 keil MDK 5.0下的各个系列的pack包离线下载的地方。官方的下载速度简直龟速,用梯子也不好使。其它地方最多下载就csdn了,无奈还要登录,然后要C币。
经测试不止下面博客介绍的pack,像m0的一样有,只有把对应包的名字链接上前缀 https://keilpack.azureedge.net/pack/就好。例如
https://keilpack.azureedge.net/pack/Keil.STM32F0xx_DFP.2.0.0.pack
SPL中,需要跳1K,写1K
感谢分享经验
堆叠的就是牛。啥元器件都不用
高速的
感谢楼主分享经验
晕哥的脚本,我有做一个软件,支持nand spl boot下载和BootLoader下载。下载好BootLoader了之后就可以用usb 下载了
SPL_SPINand_烧录软件.rar
注:如果电脑插着有小于10GB的U盘或者硬盘,而且盘符包括Linux字样的不能 用本软件!
使用时候千万要小心看软件提示,不然烧录bin到硬盘的0扇区后果很严重
用W25N01GV,选择跳2K
晕哥的脚本,我有做一个软件,支持nand spl boot下载和BootLoader下载。下载好BootLoader了之后就可以用usb 下载了
不错,感谢分享
自己顶一下
厉害了,感谢分享
不知道V3s的网口灯光控制脚的有效电平是否可以通过寄存器来决定输出的有效电平。
默认好像是高电平有效的,但是硬件上好多设计都是低电平有效,这样一来灯光就反了。
貌似硬件跑linux的时候网口的灯光好像又正常,但是在手册里面好像并没有看到可以配置电平极性的地方,不知道是不是有什么地方可以配置的
厉害了,这下有得玩了
是不是要先看下啥都不接的时候是否能进sunxi fel 模式
不错。这个时候有活做就是好
实测这个也可以用zadig装驱动
烧录时要短接flash的1、4脚,在这里加一个按键不是更方便些?
有留了一个按键。按着按键上电就是进入 fel(按键是短接flash的clk脚到地)
支持,感谢分享代码。l
支持一下。像ch552这种flash可擦写次数好像不多
msh />[E/MMC] [err]:0x00000100, RTO
[E/MMC] mmc cmd 5 err这两句错误代表什么,求助大神们
没有插卡。没用到sd卡可以去menuconfig关掉SD卡的选项
LittleVGL 不错
本来想说板子好大,然后发现是电脑好小。这是什么电脑?
GPD,类似的还有壹号本。看起来不错,就是性能上不知道能不能满足日常调试
GPD怎么样,性能用起来
谢谢师父,我的信箱是3265649676[at]qq[dot]com,我可以向您发送到目前为止已完成的工作,起初我找到了Melis USB堆栈的来源,并将所有文件移植到裸机项目中,现在可以编译了,但是 文件和依赖关系太多,因此移植似乎不太可能(此USB堆栈使用ePos的某些RTOS功能)。 然后我从u-boot移植了Sunxi堆栈,文件较少但缺少较高级别的堆栈,因此尚不能直接实现主机。 还有另一种移植,它仅从u-boot中提取了很少的文件,这个文件可以枚举,仅此而已,我感到缺少太多高级堆栈来实现HOST功能。
已发。基于rtthread 的协议栈做的。只是移植实现了下底层接口
我目前也实现了RT-THREAD下的USB DEVICE,但没有实现HOST。
因为参考了淘宝上的掌机代码,不方便公开。老大如果能方便公开USB HOST的话,请发一下我邮箱36380047@qq.com.
另请告知,如果使用了这部份代码后是否可以公开到GIT?尊守原作者的规则。
已发。可以开源
不知道你有没有"挤"过中国的公交车?
这个问题有点像挤公交车, 车还没来的时候盼着车快点到站,
要是上车了, 就想着快点关车门, 甚至恨不得把车门焊死.
哈哈哈哈.gif
坑网开源还好吧。只是大家都在忙,只有等空闲了会整理分享下自己的成果
您好,
您可以共享V3S的USB-HOST吗? 我花了很多时间尝试为F1C100S移植USB HOST,但仍然无法正常工作。 我认为V3S应该差不多。 如果我改变低水平的领域,它应该工作。
V3S的不方便。F1C100s我也有调试好,是rtthread系统的,但是还没有时间整理。如果你需要,我可以先发参考代码文件给你,留下你的邮箱。希望能帮助你尽快调通
TV-VCC, HP-VCC 都测试了是3.2V,VRA1 是179mV, VRA2是0V
去掉R2,按着烧录键试一下
支持,我想搞v3s的裸机audio
好东西,支持。现场调试工具很需要
我整理一下教学需求,请shaoxi帮忙看看:
LicheeSTEM教具分析
1教学需求
...
支持,不错的想法呢
支持一下。支持裸机开发
短接了5脚和6脚上电还是一样的没反应,Rx没接线。
那会不会是晶振问题。看看晶振频率,有没有起振
这是我查到的关于usb的资料
USB上的DM,DP拉电阻分析
USB数据端子:
1、DM+:Data Minus,数据负信号;
2、DP -:USB Data Positive,数据正信号;
USB电源端子:
1、VCC(Voltage to Current Converter)正极
2、GND负极(Ground即地线)usb有主从设备之分,主设备有:pc, 现在市面上的那些插u-disk即可播放mp3的“mp3”之类的,
usb 信号是差分信号,信号线为D+, D-,。 在usb host 端, D+,D- 各接一个15kohm 的下拉电阻, 而在usb device端,这时就有高速低速设备的区别了。usb1.0, 1.1,2.0协议中都有定义高低速设备以满足不同情况的需求,这些在硬件上的区别就是:高速设备:d+ 接一个1.5kohm的上拉电阻,d-不接;低速设备则相反。
这样当usb device 插入到host中时,如果是高速设备,则d+被拉高,d-不变;低速设备则与之相反。这个上拉过程需要大概2.5us的时间,host这这个时间内便检测到了该信号,即可判断有device plug in,和该device的类型,然后开始通讯,枚举。。。等。
USB OTG(on the go)就是既可以做host又可以做client
我们一般是作为client接受pc传输数据,作为host时可以接打印机直接把手机中的照片打印出来
判别是host还是client是靠USB_ID这根pin
当作为client时,USB_ID基本是悬空的(内部有上拉)
如果侦测到USB_ID被拉低,就被认为是作为host,向外输出
所以需要外部client设备把USB_ID拉低
和ID脚没有关系,usb 外设的id是内置支持软件上下拉的。没有引出来到引脚的
我也是用风枪+锡膏焊接的,我还万用表测试了,接触肯定是好的,我焊接了三块板子都是这样,应该不是焊接问题
确认下flash短接5脚和6脚上电看看。还有就是Rx不要接着线,因为怕io反供电导致上电不成功
有搞定摄像头裸机驱动的吗?求赐教!
不难,裸机摄像头
CVBS 有人调通了吗?花钱 求助
我调可以显示,效果不好。裸机的
我没意识到,您是F1C100S裸机项目的原始作者,真是太好了。 关于USB HOST,NXP堆栈似乎不是可移植的,您是否认为我应该尝试直接移植linux HCD堆栈?
应该并不是很难。KHCI的移植了,并且跑通了。然后后面又对接调通了rtthread的usb host协议栈。综合考虑,我建议用rtthread的usb host框架+sunxi hcd的bsp
支持一下。
厉害了。支持支持
我这调的是F系列的
usb应该是几乎一样的
NXP? 你什么意思 ?
usb host协议栈
支持大佬开搞hi3516ev200
可以移植nxp的khci
支持,v3s 裸机最近调通hid和u盘
前排支持,期待大作
厉害了,前排支持。等链接
对,板对板连接器
nb,老哥
我想问下,跑spi速度怎么样
同问,不知道有没有名字
mipi dsi还是csi?
csi,v3s的
感谢分享,先mark一下
厉害了,mipi我一直是裸机下跑
usb摄像头芯片好多吧,松瀚,螃蟹这种
销毁后,快照是存在的,这个我测过。至于存在多久,我发个工单询问一下客服。
现在还有一个问题是 ssh 的端口一会就挂了, 我怀疑被 "功夫网" 当做异常流量了,然后gg了。
ssh端口挂了, 但是 网页服务器还能照常工作。
修改 ssh 端口重启不起作用, 仍然是 22
存在多久有回复么,嘿嘿
现在bwg终于放出来了,打算先停掉vultr先
很牛逼,期待MIPI!就可以开好好开撸S3了
mipi没有问题,一直都可以
厉害了,先mark。有空再搞
楼主去搜索以前的新闻吧,Micrium早就整个卖给silabs了;还哪来的输赢之说。
这么一说还真是,之前还担心gpl的ucos ii呢,看来是白担心了。
https://iot.ofweek.com/2016-10/ART-132216-8130-30046304.html
前排占位,支持楼主分享教程。感谢感谢
楼主这样又水了一帖。为了满足还是加点字吧
感谢分享,支持
JLC SMT只能贴单面,所以现在画板,习惯把阻容尽量放在一面,全让JLC贴。省不少事。
尽管有时阻容放一面不方便布线,也要勉强这样做,否则好像错过了羊毛。哈哈。
都放在一面好看。
厉害了我的哥
微凉的那个csi接口没看懂.
原理图里的csi 需要3v3和2v8两个供电, 但3v3->2v8降压有两个ME6206.
我是不是只用一个2v8就行了? 还有那个jp3不明白是什么, 去掉直接连通就行了?
摄像头正确来说有3路供电。
一路是AVDD 一般都是2.8V 也有3.3V的
一路是IOVDD 这个是根据芯片的CSI的接口电平来的,一般3.3V,也有为了方便直接和AVDD相连接的
一路是DVDD 这个就和摄像头相关度比较大了,有的是2.8V,有的是1.8V 有的1.5V 有的1.2V。具体看摄像头数据手册
I am sorry, but really do not understand what you are trying to prove. The facts show something different.
For example, recently I ordered some ICs (30 pcs - MT3608 丝印B6289 SOT23-6 5V/1.2A 移动电源专用芯片), the Shipforwarder company claims their weight is 40 g., presenting the picture:
https://whycan.cn/files/members/667/Shipforwarder_20200408-2301.jpgI got s similar bag and put some similar items, just to see what the weight might be: 4g.:
https://whycan.cn/files/members/667/4g_package.jpgShipforwarder claims that the items weight is 40 g. while the actual weight (probably around 4g.) is much less.
这是要笑死我然后继承我的花呗账单?
全志F1C100S,可以用sunxi-fel读写
这个貌似就是荔枝派zero 开发板用的那个封装, 这个数据线是 D0/D1/D2/D3, 上面树莓派只有 D0/D1
哦,不过我用这个摄像头好像也就只有两路mipi
关注
V3S ZERO能用这个摄像头吗?直接焊接线相连可以吗?
可以,我买了这个,直接可以用在荔枝派的mipi接口上,还能对焦。 https://item.taobao.com/item.htm?id=566547808242
感谢分享经验
的确电容没有加,后面改成单个的DCDC和LDO了。感谢楼主分享趟坑经验,周末我修改下
感谢楼主分享,之前我也搞了一下,黑白显示ok,但是彩色显示时候颜色不大对。有空调下再分享
踏出了别墅第一步
厉害厉害。感谢无私分享
AGND和AVCC不知道有没有关系
还有就是底部的pad接地了没
尝试短接flash的56脚,然后上电。记得不要接串口,避免有rx倒灌供电。看看usb有识别不
说起测试图第一个想到的就是Lenna,学过DSP的同学都懂,哈哈。https://whycan.cn/files/members/1510/lena.jpg
可以看看原图(:LOL
有3.5.找对代理也蛮重要的
厉害了,感谢分享
都是马甲,S3L应该是
感谢分析,看来楼主是外国友人
不是bootrom拷贝到ddr
BootRom会把SRAM大小的代码从启动介质复制到SRAM。然后跳到sram运行
所以需要boot代码把ddr初始化,复制app的代码到ddr,跳到ddr运行
xboot启动就是一体的,可以参考xboot做法,固定把一些启动相关的代码通过link script固定放在spi前面,然后有判断运行时候的代码是否和link地址一致,这样去做到boot和app一体的
厉害了我的哥
附上Zadig自动安装驱动并签名的软件
zadig-2_3.rar
xtw100编程器好久之前买了一个。像这样的
然后在win7上装驱动一切正常,禁用签名什么的。
到了win10上,安装驱动是个大问题。禁用签名什么的还挺麻烦的,而且系统更新时候有时候又会把驱动搞掉
后面就一直没有用,安装驱动时候会提示 文件的哈希值不在指定的目录中 ,如下图
直到今天又拿出来了,发现驱动是libusb。于是乎想着不是又zadig这个开源的自动安装驱动神器么,直接打开后,选中设备WinUSBComm Device ,然后下拉选择libusb-win32(V1.2.6.0)。点击安装,一切顺利,打开软件可以识别到编程器了
终于可以在win10下愉快的使用编程器读写spi nor flash了
已经和楼主解决
这里说一下全志musb的坑
_______________________________
usb otg 做主机发送请求到设备时候,地址设置分两个寄存器的
一个是端点0和TX类请求,设置地址用的寄存器是0x98偏移的FADDR
另外一个是数据端点RX也就是IN请求,设置地址用的寄存器是0x9C偏移的RXFADDR
_______________________________
楼主的问题是枚举成功后数据端点发送IN请求请求数据的时候,地址设置还是设置FADDR,导致地址不对,设备不响应然后进入ERROR中断
有参考的,移植成功,目前都基于rtt上开发
感谢分享,前排刘明
2. vultr 结算方式和别的供应商不同, 般佤工 选好配置之后, 一次性付费一月/一季/一年/
而 vultr 是要先充钱, 比如支付宝充 20$ 送 100$, 这样你的账上余额就有了 120$选好机器配置之后,比如最乞丐的版本 5$/月, 他的计费平台是按小时(hour)使用扣费, 每用1小时 0.007$,
如果你把实例销毁(destroy)就停止计费。
这个计费方式对于捉襟见肘囊中羞涩的网友真是太有用了, 用完就做一个快照(snapshot)备份,然后销毁,
下次继续从此备份新建实例。
不知道销毁后快照还存不存在。如果存在那真的是太省钱了,需要用到时候开一开
我也开了一个,就是看好小时计费。当bwg的ip挂的时候启用
感谢分享
还有 EPAD 不接会很汤吗?
一定要接的,因为没有数字地了
关注tvin的功能,学习实在是贵了点。
TVIN可以搞
关注中。。。
继续下一个15年
关注中,单点怎么对的准额头
正常操作
没有看到图片
没有用成功,卡死在转换那里了,裸机 X1500
漂亮,支持一个
我也搞了一个,最近bwg ip挂了
https://www.vultr.com/?ref=8433609-6G
用上面链接注册可以充值10美元得100美元30天的免费使用,可以用来测试高端一点的VPS
厉害了,方便下载
厉害了,感谢分享
厉害了,感谢分享
TF卡隔壁圆的是喇叭?一直想找这种喇叭, 请问喇叭型号是什么?
按键,旋转编码器
支持一个,漂亮
关注,感谢分享
学习了
这是装纽扣电池,转起来会亮的玩具吗?
叫什么?我们小时候是用大纽扣做的,两只手一拉一拉旋转。
我们小时候用啤酒盖做,然后做成锯子,割东西
支持支持,努力赚分
自己画了个板子,usb能识别,但是烧写报错是怎么回事
root@hj-virtual-machine:/home/hj# sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
root@hj-virtual-machine:/home/hj# sudo sunxi-fel -p spiflash-write 0 u-boot/u-boot-sunxi-with-spl.bin
usb_bulk_send() ERROR -1: Input/Output Error
很有可能是用错 sunxi-fel的版本。去荔枝派官网nano.lichee.pro按照教程下载sunxi-fel工具
asdadffa
要做先要起个好听的名字。叫什么项目名好呢
如题。
最近老外的F1C100s的能跑Linux的名片在各大交流群刷屏。
可以考虑做一个名片大小的全彩点阵名片。全彩点阵可以显示图片,可以显示文字。可谓炫彩夺目
感谢分享,英文的看多了还好
2020 加油
前排支持
我也关注usb
一般重新插拔就好,接触不良
V3S 这个
官方的sdk声称spi透传可以到达M字节以上速率的,不知你用的时哪个例子?
官方github例子
可以参考:stm32通过spi连接esp8266的hspi 开发
用的是nonos的例子,这个rtos在中断处理有参考的地方。先去尝试一下
土豪的玩法,贴片费120一块板
esp8266上传不是很快
嗯,上传我应用不快。主要是下载。现在问题是STM32 的SPI大于3Mhz,8266接收就乱,不能够正确响应0x03 读命令和数据,没有进入读成功的中断
又水了一帖
他这个是用单反相机 + 摄影棚吗?
不用,就拍照好点的手机就行。搞个面板,搞个平面光源(自己找个坏的屏幕拆掉液晶也挺好用)
要硬件支持关机,就是拉io
厉害了
逻辑上没问题,应该先单独调通两边的spi(回环,自发自收),确认时序是否一致,最后再接起来调试
感谢回复,我发现stm32的 spi时钟调成3MHz就可以了,调成6MHZ或者12Mhz都不行。难道8266最高只能3Mhz么,手册上好像是写slave可以达到10Mhz的。不知道还有哪个地方有问题,spi的连接目前8266模块是贴在板子上,而不是杜邦线。应该可以排除线过长导致的问题
他这个灯光再亮一点或者把画面调亮一点就很好看了
ei,我之前淘宝也是黑色烤漆玻璃板+柔光平面灯拍。然后每一个图片都处理一遍,连排针也要这样拍然后处理。
支持,关注中
很多电视机的芯片可以。像realtek的,mstar的。内置256MB-512MB内存的
最近在调8266和stm32通讯,stm32做主机,8266做从机,然后用一个io作为miso数据的中断线,8266
填充好数据就把io拉一下,stm32外部中断里面执行
spi_tx_buf[0] = 0x03;
spi_tx_buf[1] = 0x00;
HAL_SPI_TransmitReceive_DMA(&hspi1,spi_tx_buf,spi_rx_buf,34);
把数据接收回来。
8266端,把官方spitest移植了一下,发现STM32 spi 时钟12Mhz时候可以正常通讯,然后把spi中断函数中的全部打印去掉,发现就进入不了SPI_SLV_RD_BUF_DONE中断了(有变量标志,发送数据时候置位,进入中断清0,再次发送时候发现标准非0打印错误信息退出)。后面调节过
//SET_PERI_REG_MASK(SPI_CTRL2(SpiNum_HSPI),(0x2&SPI_MISO_DELAY_NUM)<<SPI_MISO_DELAY_NUM_S) ;
//SET_PERI_REG_MASK(SPI_CTRL2(SpiNum_HSPI),(0x2&SPI_MOSI_DELAY_NUM)<<SPI_MOSI_DELAY_NUM_S) ;
数据线延迟,效果也是一样,通讯失败没有进入中断,偶尔第二次调用发送函数时候会进入SPI_SLV_WR_BUF_DONE中断或者状态中断。怀疑还是时序有点不对
有人调试过么,wifi 速度测试能够达到1.6-1.9MB/s。spi透传应该可以达到1MB/s
淘宝好像有spi 的 8266模块,是怎么实现的呢
厉害了,是dma驱动么。加一个强上拉看看
支持支持,前排围观
已经这么便宜了么?
围观围观,fpga第一帖技术贴
i = 0
欢迎加入
就喜欢用开发板做产品的
支持一个,感谢分享
裸奔还是Linux呢?驱动差不多吧?要不要用到DMA?
裸机的,不用dma。自己配置好图片数据地址,等中断来就读就好
f1c100s 吗?难度如何?
都ok,F1C100S 和 V3S都行
感谢分享
感谢分享经验,学习了
那意思是要做3维的扫描头吗?
哈哈,3维也不错,不过楼主这个60块钱还是很值的。我说几十块是批量价钱
这种东西,跟汽车是一样的,有10几万的 也有几十万的,不能一概而论。
那要看东西,现在这个2维扫描头真不值钱。
这两个屏我家里还有两片,是平板电脑拆机的
这种一般都是单8的,可以看看京东方的BP101WX1-206
用linux的话还不如玩i.mx6系列啦。
所以就是高不成 低不就,跨界没跨好,扯着蛋了~~~
imx6ul系列如果来个内置ddr就爽了
https://whycan.cn/files/members/2534/jcl.png
这个应该是寄过去的吧,但是没有用过。
那个是新出的预定库存功能,一次贴可以多买料,留到下次贴片
mipi好,usb速度不行。
新品卖700多块是什么操作?与一般的二维码读头有什么区别?
都是挂的价钱。扫描头几十块一个
这应该不行吧,太夸张了
感谢分享
支持一下
IDA Pro
C# 方便快捷
不错啊。屏幕都值55了
厉害了,大保健老司机
搞不动windows的驱动
支持一下
已上车。买一块再说,110元
亚克力还是叫店家定制形状图案文字吧。
well,好看
666,pcb啊
关注,摄像头没有mipi接口么
上拉电阻太大,rst,pwdn脚浮空,或者摄像头的电源给的不对,S3应该也是有一个摄像头io电源的,要和摄像头IOVDD一致
回贴看看我多少分
买屏一时爽,画板累死人
楼主好
关注
晕哥 说:L1234 说:是GND和MISO引脚吗
可以。 也可以 GND & CS#
还是返回ERROR: Allwinner USB FEL device not found!,,而且使用Zadig也找不到nano设备,可能是什么原因
把串口拔了,很有可能是串口rx一直供电导致复位不成功
可以正常用
这是DIY的?没查到SiPEED注塑机的资料。
是 sipeed 用桌面型注塑机制造外壳。桌面型注塑机好像淘宝有,就是不知道开这种小模具贵不贵
偷偷说一下,R11是有网口的
还可以预定吗?
可以的话,请留一个给我,手机wx 139-1020-0543 谢谢微凉VeiLiang 说:晕哥 说:@微凉VeiLiang
还可以预定不?
可以的
可以,出来后我联系你
楼主做了一块stm32f401rct6的板子。开始做的时候用的是立创商城smt的库,里面没有stm32f401rct6。于是就用里面的stm32f103rct6的元器件封装。就在此时已经开始埋下祸根。。。。。
板子画好了嘉立创也贴好了,回来后赶紧用cubemx生成程序进行测试,接上stlink下载,嗯...可以下载,很好。于是在线运行,暂停看运行结果,发现停在hardfault里面。此时楼主心里毫无波澜,心想,肯定又是cubemx在作妖了(因为以前就试过cubemx某个版本的时钟配置有bug)。然后仔细查看对应时钟位置的代码,竟然好像没有问题。。。嗯。。。心想,那肯定是我配置时钟时候配置错了,亦或者晶振没有起振。。。于是各种反复验证,发现晶振也起振了,配置也就几种,采用hsi时候倍频上去也一样挂,只有在频率小于等于48Mhz时候运行是正常的。后面换了几个板子测试,现象依旧。。
后面就在网上查找同样现象的解决办法,发现很多都说到vcap脚要接电容,电容贴错会导致频率上去就进入hardfault。好像很有道理,自己也仔细查看原理图,嗯。。。好像没有vcap脚(此时还是没有意识到用的是103的封装)。。以st的尿性,肯定是放在某个供电脚上了,毕竟64个脚其中的io脚很宝贵。然后查看供电脚,发现供电脚也都都连上了,然后每个脚也都有0.1uf电容了。这时候楼主不淡定了。。。难不成出鬼了,或者立创商城的芯片是水货。。。仔细想想也不至于啊,赶紧下载一个401的手册看看,然后发现里面Compatibility with STM32F4 Series里面有介绍64pin的一样是有vcap专门的脚的,这时候恍然大悟,原来自己用的是103的封装,pb11还拿来当io口用了。那个脚的位置是vcap脚,不是pb11了。。。。
后面果断飞上电容,烧录程序测试。。。板子终于能够在84Mhz愉快奔跑了。
后记,在调试问题过程中还发现了f4系列是支持内核电压参数配置的,在超频的时候如果hardfault了,可以调节内核电压提高稳定性。
有smt么
@微凉VeiLiang
还可以预定不?
可以的
https://whycan.cn/files/members/3/QQ20190921151654.jpg
@kekemuyu 这是我收到的,还没时间动手,要补焊好些零件,如果有兴趣可以加我QQ赠送两片, 估计坑不少。
想省事还是买荔枝派nano方便,35元一片包邮 ^_^
嘉立创的贴片很是尴尬
楼主的时间很值钱,不愿意做买卖,你看下25楼的更新版文件: https://whycan.cn/t_2788.html#p23140
可以自己手工DIY
我朋友在帮忙做这个了,自己手工贴,下周可能会出来十片样品
更新了一下。
增加了摄像头DVDD 和 AVDD分开LDO供电,如果DVDD和AVDD一样则可以通过背面的跳线进行端接即可,可不贴DVDD的LDO
修复了14楼的摄像头10脚接地问题
增加了TVIN0脚的输入滤波电路。方便调试TVD
增加了Markpoint,方便贴片
最后附上GitHub项目连接,欢迎star,和 提出修改意见
https://github.com/VeiLiang/BoloPi_PCB
非常感谢晕哥吃螃蟹,期待中
晕哥小弟 说:1、 https://whycan.cn/viewtopic.php?id=2826
这个链接有问题么?不也可以指向到论坛的帖子么?为什么要修改?
2、我搜了下国内玩论坛的,都是在弄discuz。1. 链接没问题, 但是 https://whycan.cn/t_2826.html 这个看起来更专业,特别是我这种有强迫症的。
不过到现在还没有改完, 很多地方还有散落的 .php 链接。
以前的搜索引擎对后缀是 .html (假装是静态网页) 的 PageRank(PR) 评分比较高,搜索可以排前面。2. 我就是不想用千篇一律的 discuz, 搞点另类, 哪知道功能太弱鸡, 连手机都没有适配。道听途说discuz母公司已经宣布破产?
discuz不是腾讯的么
这个注册的id时间不简单
楼主 我有两个问题 :
1.Dvp接口 10脚DGND 没有接地
2.Dvp接口 15脚是VCC2.8V,我看了下0V2640的原理图应该是1.2V吧
嗯,没说没发现呢,地是要接,我用的sensor内部已经接了,不过这个可以出来打个过孔。
电压可以通过改ldo来改。不过要用两路电压供电的sensor可能就不适合了
怎么卖呢,有淘宝店么
也不是想象中那么好用,因为一般夹上去就给,mcu供电了,导致数据冲突
感谢分享。
过孔直径是不是有点小?10mil直径。嘉立创双面板过孔直径最小是0.3mm。
还有个疑问,RGB接口是为了方便画线按顺序连到了LCD接口上,那么应该在哪里设置RGB的对应关系呢?因为之前看到的荔枝派nano还有一些唱戏机的接口,都是LCD_D18~D23对应R2~R7,LCD_D10~D15对应G2~G7,LCD_D2~D7对应B2~B7。
嗯,嘉立创我一直是安装0.2,0.45的标准画的,两层板一样是可以做的。lcd是按照荔枝派的接的
感谢楼主分享~~~
非常感谢。能分享下源码吗?谢谢啦。
有源pcb工程文件,f1c的开源代码的话暂时没有,先用网友分享的代码跑
微凉VeiLiang 说:一楼感谢晕哥提供的坑网平台
得感谢包括楼主在内的各位热心网友才行!
啥时候开卖 ^_^ 坐等
这个暂时还没有打算:lol
摄像头采集实时显示调通了?
嗯,之前就调好了
很爽哦,楼主卖不卖壳啊
一楼感谢晕哥提供的坑网平台
1.板子是两层板,可以之间打样。
2.板子上全部io引出,间距可以插到洞洞板或者面包板上
3.dvp摄像头和RGB屏幕同时引出,支持摄像头采图实时显示
4.音频和视频都引出,方便各种填坑测试
5.四角带M3螺丝孔
6.支持堆叠扩展
7.新的PCB带按键,方便烧录和调试
板子叫做菠萝派,其实菠萝派在5年前就想好了的,logo都做好了,一直没有产出。现在借着F1芯片先出一个菠萝派F1先
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PCB工程By AltiumDesigner09
PineapplePi-F1_PCB.rar
以下是楼主 2019-09-01 25楼更新V2版本:
---------------------------------------------------------------------------
感谢楼主的无私分享, 这是第二版PCB文件:
DXP PCB: PineapplePi-F1_PCB_V2.rar
BOM表(用于JLC SMT): BoloPi-F1_V2.xls
666,吃鸡手游刚出来的时候我也想过做这个,不过还是没有动手,没想到楼主实现了。支持支持