发作品签到
专业版

F1C200S小小Linux屏幕开发板【双层板+Qt4.8.7】

工程标签

1.8k
0
0
2

简介

基于全志F1C200S核心的Linux小开发板with 4.3寸480*800 RGB666屏幕。本项目已移植好系统,uboot荔枝派、内核linux5.7.1、rootfs:Debian11

简介:基于全志F1C200S核心的Linux小开发板with 4.3寸480*800 RGB666屏幕。本项目已移植好系统,uboot荔枝派、内核linux5.7.1、rootfs:Debian11
复刻成本:130

开源协议

CC BY-NC-SA 4.0

创建时间:2024-07-07 04:15:20更新时间:2024-09-09 01:39:43

描述

1. 项目简介

  本项目基于全志F1C200S SOC设计制作了一个带4.3寸480*800 LCD的低成本Linux开发板,主要用于Qt4.8.7或Lvgl等图形化界面开发。开发板搭载256Mbit SPI Flash、ESP8089 WIFI(SPI接口)、RGB666 LCD、IIC触控接口、耳机接口、USB2.0&UART(typec)等,能够满足Linux开发的大部分需求。

  参考项目:https://oshwhub.com/fanhuacloud/f1c200s_lcd_backup

2. 硬件设计简述

  该SOC需要提供1.1V、2.5V及3.3V的数字供电及2.8V的模拟供电。数字部分使用EA3036三路DCDC芯片、模拟2.8V使用RT9193-28GB LDO提供(注意购买时该LDO的输出电压)、以及LCD的背光恒流驱动使用SGM3732实现。

  所有硬件经验证均可使用!PCB实物图如下:

  本文使用的LCD屏幕是“耀元鸿科技“的4.3寸800*480 GT911触摸芯片的LCD屏幕,如果不想修改kernel和uboot的屏幕时序可以直接到淘宝购买同款。

3. 软件移植

  软件和驱动移植全文参考教程:https://blog.csdn.net/qq_41709234/category_12158774.html

  首先建议配置好系统环境和编译器。本人使用Ubuntu20.04编译UBOOT和Kernel,编译器为arm-linux-gnueabi(gcc version 7.2.1 20171011)、但是需要提前说明的一点,由于f1c200s内核为armv5架构后续不管是编译tslib还是qt都需要更老版本的编译器,但qt5以上的版本需要gcc版本更高,所以老编译器过不了故只能移植qt4.8.7。如果继续使用上述编译器,那编译好的软件放到板子上运行会“illegal instruction”报错。后续在移植时更换为ubuntu16&arm-none-linux-gnueabi(gcc version 4.8.3 20140320),该版本编译后的程序可以在F1c200s上正常运行。(uboot和kernel还是在较新编译器下编译的,没尝试都用老的)

  3.1 UBOOT的拉取和编译

    参考荔枝派教程:https://wiki.sipeed.com/soft/Lichee/zh/Nano-Doc-Backup/get_started/first_eat.html

sudo apt-get install git
git clone https://gitee.com/LicheePiNano/u-boot.git
cd u-boot
# 查看分支 git branch -a # 切换到 Nano 分支 git checkout nano-lcd800480
# 此处告知make采用arm-linux-gnueabi下的所有交叉编译工具,目标架构为Arm,设定各项默认配置为 nano 的spiflash支持版 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig

uboot下修改默认串口到串口1:

  1. /arch/arm/dts/suniv-f1c100s-licheepi-nano.dts:

aliases {
                //serial0 = &uart0;
                serial1 = &uart1;
        };

        chosen {
               //stdout-path = "serial0:115200n8";
               stdout-path = "serial1:115200n8";
        };

&uart0 {
    //pinctrl-names = "default";
    //pinctrl-0 = <&uart0_pins_a>;
    //status = "okay";
};

&uart1 {
       pinctrl-names = "default";
       pinctrl-0 = <&uart1_pins_a>;
       status = "okay";
};

 

  2. /arch/arm/dts/suniv.dtsi:

  pio修改:
uart0_pins_a: uart-pins-pe {
//pins = "PE0", "PE1";
//function = "uart0";
};
 
uart1_pins_a: uart-pins-pa {
                pins = "PA2", "PA3";
                function = "uart1";
            };
 
  3. /arch/arm/include/asm/arch-sunxi/gpio.h:
#define SUNIV_GPE_UART0                5
+#define SUNIV_GPA_UART1                5
+#define SUNIV_GPE_UART2                3
 
  4. /arch/arm/mach-sunxi/board.c:
@@ -87,6 +87,14 @@ static int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPE(0), SUNIV_GPE_UART0);
        sunxi_gpio_set_cfgpin(SUNXI_GPE(1), SUNIV_GPE_UART0);
        sunxi_gpio_set_pull(SUNXI_GPE(1), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(2), SUNIV_GPA_UART1);
+       sunxi_gpio_set_cfgpin(SUNXI_GPA(3), SUNIV_GPA_UART1);
+       sunxi_gpio_set_pull(SUNXI_GPA(3), SUNXI_GPIO_PULL_UP);
+#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUNIV)
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(7), SUNIV_GPE_UART2);
+       sunxi_gpio_set_cfgpin(SUNXI_GPE(8), SUNIV_GPE_UART2);
+       sunxi_gpio_set_pull(SUNXI_GPA(8), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN4I) || \
                                 defined(CONFIG_MACH_SUN7I) || \
                                 defined(CONFIG_MACH_SUN8I_R40))
 
  5. /include/configs/suniv.h
+#undef CONFIG_CONS_INDEX
+#define CONFIG_CONS_INDEX       3
 
 
  *最后在uboot的bootargs中添加:setenv bootargs console=tty0 console=ttyS1,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw
  *注意在bootcmd添加用以引导kernel:load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;
  *如果需要在uboot下使用LCD,请配置 ARM architecture --> Enable graphical uboot console on HDMI, LCD or VGA 为 Y,接着配置同级的 LCD panel timing details 为:
x:800,y:480,depth:18,pclk\khz:25000,le:8,ri:8,up:16,lo:16,hs:4,vs:4,sync:3,vmode:0  (时序参数配置请根据自己的LCD修改)
 
3.2 Kernel移植及驱动移植编译
 
完全参考教程:https://blog.csdn.net/qq_41709234/category_12158774.html 中 3~10内容,不过设备树中某些外设地址需要参考f1c100s数据手册进行对应硬件进行修改(如wifi的spi接口)
该教程中gt1151的触控芯片驱动可与GT911完全适配无需任何修改。
 
*关于kernel音频部分的修改,参考:https://linux-sunxi.narkive.com/3zRXUcrE/rfc-patch-00-10-add-support-for-dma-and-audio-codec-of-f1c100s
 
3.3 关于tslib1.21和qt4.8.7
 
可参考:https://whycan.com/p_58590.html
可参考:https://www.cnblogs.com/guanglun/p/9277667.html
 
  qt4.8.7编译选项:./configure -prefix /home/steve/arm/arm-qt -opensource -embedded arm -confirm-license -qt-sql-sqlite -qt-gfx-linuxfb -plugin-sql-sqlit -no-qt3support -no-phonon -no-svg -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -qt-zlib -no-gif -qt-libtiff -qt-libpng -no-libmng -qt-libjpeg -no-rpath -no-pch -no-3dnow -no-avx -no-neon -no-openssl -no-nis -no-cups -no-dbus -embedded arm -platform linux-g++ -little-endian -qt-freetype -no-opengl -no-glib -qt-mouse-tslib -I/home/steve/arm/arm-tslib/include -L/home/steve/arm/arm-tslib/lib -no-neon
 
  添加的环境变量:

export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/opt/tslib/bin
export TSLIB_ROOT=/usr/lib/arm-tslib
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export LD_PRELOAD=$TSLIB_ROOT/lib/libts.so

export LD_LIBRARY_PATH=/lib:/usr/lib:$TSLIB_ROOT/arm-tslib/lib:/home/steve/arm/aa
rm-qt/lib
export QT_ROOT=/home/steve/arm/arm-qt
export QT_QWS_FONTDIR=$QT_ROOT/lib/fonts
export QT_QWS_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QWS_PLATFORM=linuxfb:tty=/dev/fb0
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:$QT_ROOT/lib:/usr/lib/arr
m-linux-gnueabi/lib
export QWS_MOUSE_PROTO=tslib:/dev/input/event0

(路径请自行修改、fb0和event0也请自行修改)
4. 系统运行配置
4.1 uboot烧录:
  写入sd卡:sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
  写入spi(需要sunxi-tools):sunxi-fel -p spiflash-write 0 ./u-boot-sunxi-with-spl.bin        (使用usb连接电脑,取下tf,按下fel)
 
4.2 写入Kernel:
  分区:使用gpart工具: 32MB FAT16分区用于存储kernel和dtsi、剩余容量ext4分区,rootfs。
  分区好后直接将编译后的设备树和内核镜像复制到分区0。
 
4.3 写入rootfs
  将自己制作的或我提供的压缩包直接解压到ext4分区。
 
4.4 复制tslib和qt4.8.7
  请自行将这两个编译好的文件复制到相应位置,本项目打包上传的rootfs不包含。
 
5. 测试照片:
 
mp3音频播放:(使用mplayer)
mp4视频播放:(mplayer、非常卡)
qt4.8.7测试:

WIFI测试:(很慢就是了)

 

关于上传的文件:

  首先网页后续的附件中编译好的arm-qt & arm-tslib包,可直接解压到根文件系统中进行配置;

  datasheet为相关芯片的数据手册(f1c100s有详细的寄存器和中断等信息;

  uboot、kernel、rootfs、编译器(gcc4.8.3)、qt4.8.7源码等由于体积较大故上传百度云盘,地址:

      通过网盘分享的文件:f1c200s
      链接: https://pan.baidu.com/s/1v4qLWt4PDbzkcm0mK4IMMg?pwd=twtj 提取码: twtj

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
armtslib.tar.gz
11
2
armqt.tar.gz
13
3
arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
34
4
datasheet.zip
18
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航