https://whycan.com/files/members/4986/QQ截图20200927185730.png
dd if=fel-sdboot.sunxi of=fel-sdboot.img bs=1024 seek=8
然后用 win32diskimager 烧录 fel-sdboot.img 就可以了.
本站下载: fel-sdboot.zip
感谢, 学到了新知识。
https://variwiki.com/index.php?title=U-Boot_features
通过u-boot的ums命令,把小智X3开发板eMMC模拟成电脑U盘,然后利用win32diskimager烧录固件。
eMMC固件本站下载: smallwit_x3_emmc_image_20200827113720.tgz
tf版本u-boot本站下载: u-boot-sunxi-with-spl-smallwit-x3-burn-emmc.7z (从TF卡启动, 按回车进入命令行之后,输入命令 ums 0 mmc 1 电脑出现U盘即可烧录)
仅限有eMMC 的X3开发板可以用, 连我都没有, 我是在小智的X3卡片电脑测试的。
脚本 /app/update_spiflash.py
#!/usr/bin/python
#https://stackoverflow.com/questions/51828943/pyqt5-and-subprocess-popen
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Console(QtWidgets.QWidget):
errorSignal = QtCore.pyqtSignal(str)
outputSignal = QtCore.pyqtSignal(str)
def __init__(self):
super().__init__()
self.editor = QtWidgets.QPlainTextEdit(self)
self.editor.setReadOnly(True)
self.font = QtGui.QFont()
# self.font.setFamily(editor["editorFont"])
self.font.setPointSize(12)
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.editor, 1)
self.setLayout(self.layout)
self.output = None
self.error = None
self.editor.setFont(self.font)
self.process = QtCore.QProcess()
self.process.readyReadStandardError.connect(self.onReadyReadStandardError)
self.process.readyReadStandardOutput.connect(self.onReadyReadStandardOutput)
def onReadyReadStandardError(self):
error = self.process.readAllStandardError().data().decode()
self.editor.appendPlainText(error)
self.errorSignal.emit(error)
def onReadyReadStandardOutput(self):
result = self.process.readAllStandardOutput().data().decode()
self.editor.appendPlainText(result)
self.outputSignal.emit(result)
def run(self, command):
"""Executes a system command."""
# clear previous text
self.editor.clear()
self.process.start(command)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = Console()
w.show()
w.errorSignal.connect(lambda error: print(error))
w.outputSignal.connect(lambda output: print(output))
# w.run("ping 127.0.0.1")
w.run("flashcp /mnt/media/mmcblk0p1/update_spi_nor_flash/x3_flash_32m.bin /dev/mtd0 -v")
sys.exit(app.exec_())
开机自动执行mx25l256 spi nor flash烧写: /app/update_spiflash.py -platform linuxfb
5寸800x480 TF固件下载: smallwit_x3_tfcard_20200826164952.tgz
=> usb reset
resetting USB...
Bus usb@1c19000: Allwinner mUSB OTG (Host)
Bus usb@1c1a000: USB EHCI 1.00
Bus usb@1c1a400: USB OHCI 1.0
scanning bus usb@1c19000 for devices... 1 USB Device(s) found
scanning bus usb@1c1a000 for devices... 2 USB Device(s) found
scanning bus usb@1c1a400 for devices... 1 USB Device(s) found
scanning usb for storage devices... 2 Storage Device(s) found
=>
=> fatls usb 0:1
4307664 zImage
25006 sun8i-x3-smallwit-demo.dtb
394 boot.scr
322 boot_demo_50inch_800x480.cmd
splash/
537797 u-boot-sunxi-with-spl-tfcard.bin
System Volume Information/
6 file(s), 2 dir(s)
=>
=> fatls usb 1:1
4429288 zImage
25474 sun8i-x3-smallwit-demo.dtb
482 boot.scr
410 boot_demo_50inch_800x480.cmd
splash/
547036 u-boot-sunxi-with-spl-tfcard.bin
5 file(s), 1 dir(s)
=>
=>
支持USB HOST & OTG 的小智X3 u-boot 固件, 支持同时插两个U盘: u-boot-sunxi-with-spl_x3_smallwit_20200826.7z
X3 MX25L256 SPI Flash 5寸 800*480 电阻屏固件: x3_flash_32m.7z
烧录方法: 制作楼上的TF卡固件, 并从TF卡启动, 把解压缩后的 x3_flash_32m 拷贝到U盘, 然后插入X3开发板,
等U盘挂载成功后, 执行命令:
flashcp /mnt/media/sda1/x3_flash_32m.bin /dev/mtd0 -v
根据U盘配置不同, 有可能不是 sda1, 可能是sda2/3/4 ...
电脑通过mobaxterm 连接 X3开发板ssh 服务器 --dropbear
热点名: whycan
密码: whycan.cn
小智X3开发板, 支持开机画面的5' 800x480 TF卡 固件
大佬,pyqt占多少内存?
占用 26M 左右物理内存
# cat /proc/219/cmdline
/usr/bin/python/app/test_pyqt5.py-platformlinuxfb#
#
# cat /proc/219/status |grep VmRSS
VmRSS: 26164 kB
#
#
# cat /proc/219/status
Name: test_pyqt5.py
Umask: 0022
State: R (running)
Tgid: 219
Ngid: 0
Pid: 219
PPid: 216
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
NStgid: 219
NSpid: 219
NSpgid: 98
NSsid: 98
VmPeak: 58944 kB
VmSize: 57740 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 26164 kB
VmRSS: 26164 kB
RssAnon: 6996 kB
RssFile: 19168 kB
RssShmem: 0 kB
VmData: 15732 kB
VmStk: 132 kB
VmExe: 4 kB
VmLib: 23948 kB
VmPTE: 54 kB
VmSwap: 0 kB
CoreDumping: 0
Threads: 2
SigQ: 0/794
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000001001004
SigCgt: 00000001800a4002
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Speculation_Store_Bypass: unknown
Cpus_allowed: f
Cpus_allowed_list: 0-3
voluntary_ctxt_switches: 386096
nonvoluntary_ctxt_switches: 2564
http://hutaow.com/blog/2014/08/28/display-process-memory-in-linux/
5.0寸 800x480 电阻屏固件: smallwit_x3_tfcard_20200815015629.tgz
1. 支持u-boot开机画面
2. 支持USB HOST & OTG, 支持两个USB口同时插入U盘
4.3寸 480x272 固件: smallwit_x3_tfcard_20200705071700.tgz
1. 支持电阻触摸屏
2. 支持Python3 + PyQt5
3. 支持AP6212 WIFI 热点
显示效果:
代码参考: https://whycan.cn/t_3400.html#p48415
#!/usr/bin/python
# https://pythonprogramminglanguage.com/pyqt5-hello-world/
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, QPushButton
from PyQt5.QtCore import QSize
class HelloWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(640, 480))
self.setWindowTitle("Hello world - pythonprogramminglanguage.com")
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
gridLayout = QGridLayout(self)
centralWidget.setLayout(gridLayout)
label1 = QLabel("WhyCan.cn Python3 + PyQt5 演示程序");
gridLayout.addWidget(label1, 2, 0)
button1 = QPushButton("按我1")
button1.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button1, 0, 0)
button2 = QPushButton("按我2")
button2.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button2, 0, 1)
button3 = QPushButton("按我3")
button3.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button3, 1, 0)
button4 = QPushButton("按我4")
button4.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button4, 1, 1)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = HelloWindow()
mainWin.show()
sys.exit( app.exec_() )
小智X3开发板淘宝购买链接: https://item.taobao.com/item.htm?id=607207528669
以下是在小智发给我的X3 SDK基础上改改完成的。
固件下载: smallwit_x3_tfcard_20200703010725.tgz
1. 支持板载AP6212 WIFI 热点, 热点名whycan, 密码: whycan.cn
2. 支持USB鼠标
3. 支持Python + PyQt5, 可以脚本编程Qt5
4. ...
以下由 @哇酷网小二 2020-07-05 添加:
----------------------------------------
小智X3开发板原理图下载: https://whycan.cn/t_4840.html
smallwit小智X3开发板-TF_SPIFLASH_EMMC_USB.pdf
V3s ENC28j60 网卡驱动成功, SPI接口连ENC28J60, PB5接ENC28J60 INT口:
&spi0 {
status ="okay";
eth1: enc28j60@0{
compatible = "microchip,enc28j60";
reg = <0x0>; /* CE0 */
interrupt-parent = <&pio>;
interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>; /* (PB5) */
gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>;
spi-max-frequency = <12000000>;
status = "okay";
};
#if 0
mx25l25635e:mx25l25635e@0 {
compatible = "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <50000000>;
#address-cells = <1>;
#size-cells = <1>;
};
#endif
};
固件本站下载: V3s_tfcard_20200702151252.tgz
添加 ESP8089 支持:
本站下载: V3s_tfcard_20200630103649.tgz
配置文件: /etc/init.d/S39wifi
#!/bin/sh
modprobe r8723bs
sleep 0
modprobe esp8089.ko config=crystal_26M_en=1
sleep 2
ifconfig wlan0 192.168.10.1 netmask 255.255.255.0 up
dnsmasq -i wlan0 --dhcp-range=192.168.10.100,192.168.10.109,2h
hostapd /etc/hostapd.conf &
#wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
现在:
既支持RTL8723BS, 也支持ESP8089
既支持AP模式,也支持STA模式
@哇酷小二 感谢小二, 参考上面的脚本已经搞定.
现在插上网线, 自动获取IP地址, 手机/电脑 连V3s的手机热点上网, 可以当路由器用.
/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
# key_mgmt=NONE
ssid="whycan"
psk="whycan.cn"
}
用这个固件, WIFI连接路由器热点,然后就可以通过ETH0上网了:
#连接WIFI路由器:
wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf -B
#设置eth0地址:
ifconfig eth0 192.168.10.1
#eth0装上dhcp服务器:
dnsmasq -i eth0 --dhcp-range=192.168.10.100,192.168.10.109,2h
#设置路由:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
@哇酷小二 感谢小二, 参考上面的脚本已经搞定.
现在插上网线, 自动获取IP地址, 手机/电脑 连V3s的手机热点上网, 可以当路由器用.
#!/usr/bin/python
# https://pythonprogramminglanguage.com/pyqt5-hello-world/
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, QPushButton
from PyQt5.QtCore import QSize
class HelloWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(640, 480))
self.setWindowTitle("Hello world - pythonprogramminglanguage.com")
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
gridLayout = QGridLayout(self)
centralWidget.setLayout(gridLayout)
label1 = QLabel("WhyCan.cn Python3 + PyQt5 演示程序");
gridLayout.addWidget(label1, 2, 0)
button1 = QPushButton("按我1")
button1.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button1, 0, 0)
button2 = QPushButton("按我2")
button2.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button2, 0, 1)
button3 = QPushButton("按我3")
button3.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button3, 1, 0)
button4 = QPushButton("按我4")
button4.setStyleSheet("border: 1px solid black; background: white;width: 50px; height: 80px;");
gridLayout.addWidget(button4, 1, 1)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = HelloWindow()
mainWin.show()
sys.exit( app.exec_() )
本站下载: V3s_tfcard_20200627115401.tgz
1. ADB ok
2. Python3 + PyQt5 OK, 开机运行PyQt5 QWidgets Demo app
3. RTL8723BS WIFI 热点 OK, ssid: whycan, password: whycan.cn
4. AIR720/AIR724 4G模块驱动 OK
5. SSH服务器OK, 连WIFI热点上去之后,V3s IP地址是 192.168.10.1
6. 插上网线可以作WIFI路由器:
#从上级路由器获取IP/网关等配置信息
udhcpc -i eth0#开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward#eth0是以太网口, eth1是4G
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
目前还有一个问题未解决, 如何检测网线插入, 然后自动执行 udhcpc -i eth0
楼上的固件忘记使能adbd server: https://whycan.cn/t_2794.html#p22759
运行以下代码即可:
#! /bin/sh
modprobe g_ffs idVendor=0x18d1 idProduct=0x4e42 iSerialNumber="buildroot"
mkdir -p /dev/usb-ffs/adb
mount -t functionfs adb /dev/usb-ffs/adb -o uid=2000,gid=2000
adbd &
本站下载TF卡固件: V3s_tfcard_20200618160530.tgz
此固件支持:
0. 开机画面
1. RTL8723BS WIFI热点, SSID名: whycan, 密码whycan.cn
2. 可以接AIR724 4G上网, 手机连接whycan热点,那么手机可以连接互联网。
3. 支持Qtdemo, 演示程序地址: output/build/qt5base-5.12.4/examples/widgets/dialogs/classwizard/classwizard.pro
固件文件分析(抽取文件)可以用 @哇酷小二 这个方法: https://whycan.cn/t_4401.html#p42622
连接wifi热点可以转发到4G网口上网的指令:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
终于整出这个32M spi nor flash 固件了,运行linux 3.4, 开启自动运行 emwin demo:
开机运行emwin demo 的固件: v3s_flash_32m_20191219_adbd_emwin.tgz
可以直接用 adb shell 进入命令行.
记得荔枝派的 NS2009的中断脚(IRQ)与 PB2 短路才行哦.
然后运行触摸校正,测试,emwin演示程序:
TSLIB_TSEVENTTYPE=INPUT TSLIB_TSDEVICE=/dev/input/event1 TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_PLUGINDIR=/usr/lib/ts TSLIB_FBDEVICE=/dev/fb0 TSLIB_CONSOLEDEVICE=none ts_calibrate
TSLIB_TSEVENTTYPE=INPUT TSLIB_TSDEVICE=/dev/input/event1 TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_PLUGINDIR=/usr/lib/ts TSLIB_FBDEVICE=/dev/fb0 TSLIB_CONSOLEDEVICE=none ts_test
TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_TSDEVICE=/dev/input/event1 /usr/bin/GUIDemo
带adb服务器的固件: v3s_flash_32m_2019121822_adbd.tgz
插入usb, 直接用adb可以shell/pull/push
ps: 昨天晚上传了很久都没传上来, 今天早上秒传了。
往期1: 感谢@晕哥邀请和测试,发布一个widora tiny200 480x272 5寸电阻屏TF卡固件, 开机跑 emwin,账号root,无密码
往期2: 分享一个 5寸的 800x480 的 f1c100s 固件, 感谢 @xm1994
调试串口UART0 (PB8/PB9)
第一次玩V3s, 拼拼凑凑搞了几天,终于弄出一个能烧录的完整版本了, 感谢论坛里面各种高手大神。
我的flash是 MX25L256, 理论上 台湾华邦W25Q256, 北京兆易GD25Q256 都可以烧录运行。
打包需要的文件: v3s_pack_files_2019121809.tgz
烧录文件: v3s_flash_32m_20101218.tgz
flash分区规划:
u-boot 0 - 0x4FFFF (320KiB)
boot logo background 0x50000 - 0x9FFFF (320KiB)
boot logo xxxxxxxxx 0xA0000 - 0xEFFFF (320KiB)
dtb 0xF0000 - 0xFFFFF ( 64KiB)
zImage 0x100000 - 0x5FFFFF ( 5MiB)
rootfs 0x600000 - 0x1FFFFF ( 26MiB = 32MiB - 6MiB)
烧录整个flash:
sunxi-fel.exe -p spiflash-write 0 v3s_flash_32m.bin
独立烧录:
sunxi-fel.exe -p spiflash-write 0 u-boot-sunxi-with-spl.bin
sunxi-fel.exe -p spiflash-write 0x50000 whycan.bmp.gz
sunxi-fel.exe -p spiflash-write 0xF0000 sun8i-v3s-licheepi-zero-dock.dtb
sunxi-fel.exe -p spiflash-write 0x100000 zImage
sunxi-fel.exe -p spiflash-write 0x600000 jffs2.bin
此地下载: whycan_widora_f1c100s_linux_emwin_480x272_ns2009_rtp.7z
丝印 PE11 旁边的电阻要焊上。
运行emwin demo:
TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_TSDEVICE=/dev/input/event1 /usr/bin/GUIDemo
ts_test 测试电阻触摸屏:
TSLIB_TSEVENTTYPE=INPUT TSLIB_TSDEVICE=/dev/input/event1 TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_PLUGINDIR=/usr/lib/ts TSLIB_FBDEVICE=/dev/fb0 TSLIB_CONSOLEDEVICE=none ts_test
ts_calibrate 校准电阻触摸屏:
TSLIB_TSEVENTTYPE=INPUT TSLIB_TSDEVICE=/dev/input/event1 TSLIB_CALIBFILE=/etc/pointercal TSLIB_CONFFILE=/etc/ts.conf TSLIB_PLUGINDIR=/usr/lib/ts TSLIB_FBDEVICE=/dev/fb0 TSLIB_CONSOLEDEVICE=none ts_calibrate
以下是@晕哥 2019-12-01 更新:
-------------------------------
相关链接: 感谢 widora @mango 友情赠送的精致小巧TINY200开发板套件, 主控全志 F1C200s
120M tfcard ATWK 演示版本下载: f1c100s_linux_awtk_dump_20191022.7z
/awtk/bin/smartwatch 是手表演示程序.
https://github.com/buildroot/buildroot/blob/master/package/Config.in
comment "Other GUIs"
source "package/qt5/Config.in"
if BR2_PACKAGE_QT5
comment "QT libraries and helper libraries"
source "package/cutelyst/Config.in"
source "package/grantlee/Config.in"
source "package/kf5/Config.in"
source "package/qextserialport/Config.in"
source "package/qjson/Config.in"
source "package/quazip/Config.in"
source "package/qwt/Config.in"
偷偷瞄了一下, Qt5还在
16M spiflash adb & emwin 版本下载: suniv_f1c100s_w25q128_usb_adb_emwin_20190901.7z
128M tfcard adb & emwin 版本下载: suniv_f1c100s_128M_tfcard_usb_adb_emwin_20190901.7z
生成jffs2 rootfs:
mkfs.jffs2 --pad=0xAF0000 -d ./target -o rootfs.jffs2
分立烧写:
sunxi-fel -p spiflash-write 0 u-boot-sunxi-with-spl.bin
sunxi-fel -p spiflash-write 0x60000 whycan.bmp.gz
sunxi-fel -p spiflash-write 0x100000 suniv-f1c100s-licheepi-nano-800480.dtb
sunxi-fel -p spiflash-write 0x110000 zImage
sunxi-fel -p spiflash-write 0x510000 rootfs.jffs2
一次烧写:
sunxi-fel -p spiflash-write 0x510000 flash_16m.bin
打包方法:
dd if=/dev/zero bs=1M count=32 | tr "\000" "\377" > flash_16m.bin
dd if=notrunc if=u-boot-sunxi-with-spl.bin of=flash_16m.bin seek=0
dd if=notrunc if=whycan.bmp.gz of=flash_16m.bin bs=$((0x60000)) seek=1
dd if=notrunc if=suniv-f1c100s-licheepi-nano-800480.dtb of=flash_16m.bin bs=$((0x100000)) seek=1
dd if=notrunc if=zImage of=flash_16m.bin bs=$((0x110000)) seek=1
dd if=notrunc if=rootfs.jffs2 of=flash_16m.bin bs=$((0x510000)) seek=1
adb 的编译和使用方法参考: https://whycan.cn/t_2794.html
firstman 说:晕哥 说:感谢楼主热心分享!
参考链接1: http://nano.lichee.pro/build_sys/build_flash.html
参考链接2: 核心板原理图 Lichee_nano.pdf (第一版)
参考链接3: 核心板原理图 lichee_nano_new.pdf (第二版 ns2009)
参考链接4: 底板原理图 lpi-nano-dock.pdfhttps://whycan.cn/files/members/1574/2019-08-17_090528.png
请问这种接口的 GT911 电容触摸屏哪里可以买到?
就是这种:
https://detail.tmall.com/item.htm?id=561493224626
优屏旗舰店 选 stc 5099
我当时买得早, 现在荔枝派好像不卖这种电容屏了。
都是20多元,贵的一匹啊
这个便宜很多了, 10块钱: https://item.taobao.com/item.htm?id=548102737060
我试了一下荔枝派官方固件也是这样.
试一试我这个: https://whycan.cn/t_2689.html
参考这个大神的帖子: https://whycan.cn/t_2688.html
荔枝派nano跑 Linux + emwin: licheepi_nano_f1c100s_emwin_20190729.7z
可以直接 sunxi-fel 烧录到 16M 及其以上spi nor flash
https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/backlight/pwm-backlight.txt
https://superuser.com/questions/1091697/setting-pwm-backlight-brightness-on-boot
https://developer.toradex.com/knowledge-base/backlight-(linux)
echo 7 > /sys/class/backlight/backlight/brightness
这种驱动方式玩 LCD 背光, 有没有哪位试过?
jiangming1399 说:https://www.lotlab.org/2019/02/22/荔枝派nano的spi-flash系统编译创建全过程/
看屏幕背光亮度调整那一节 可能能帮到你
设备树中,去掉gpios的配置就正常啦,十分感谢大家
compatible = "qiaodian,qd43003c0-40", "simple-panel"; #address-cells = <1>; #size-cells = <0>; - enable-gpios = <&pio 4 6 GPIO_ACTIVE_HIGH>;
进了同一个坑, 开始怎么调都出不来,总是保持高电平,后来输出 PE6 复用寄存器状态才恍然大悟。
evtest 可以测试那四个按键:
# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: 1c22800.lradc
Select the device event number [0-0]: 0
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "1c22800.lradc"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 114 (KEY_VOLUMEDOWN)
Event code 115 (KEY_VOLUMEUP)
Event code 352 (KEY_OK)
Event code 353 (KEY_SELECT)
Properties:
Testing ... (interrupt to exit)
Event: time 2663.260991, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 2663.260991, -------------- SYN_REPORT ------------
Event: time 2663.471909, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 2663.471909, -------------- SYN_REPORT ------------
Event: time 2666.354566, type 1 (EV_KEY), code 353 (KEY_SELECT), value 1
Event: time 2666.354566, -------------- SYN_REPORT ------------
Event: time 2666.565488, type 1 (EV_KEY), code 353 (KEY_SELECT), value 0
Event: time 2666.565488, -------------- SYN_REPORT ------------
Event: time 2667.424816, type 1 (EV_KEY), code 352 (KEY_OK), value 1
Event: time 2667.424816, -------------- SYN_REPORT ------------
Event: time 2667.620117, type 1 (EV_KEY), code 352 (KEY_OK), value 0
Event: time 2667.620117, -------------- SYN_REPORT ------------
Event: time 2668.139619, type 1 (EV_KEY), code 352 (KEY_OK), value 1
Event: time 2668.139619, -------------- SYN_REPORT ------------
Event: time 2668.311484, type 1 (EV_KEY), code 352 (KEY_OK), value 0
Event: time 2668.311484, -------------- SYN_REPORT ------------
https://whycan.cn/t_2169.html 借用了晕哥的一键打包命令:
dd if=/dev/zero bs=1MiB count=16 | tr "\000" "\377" > flash_16m.bin
###合并u-boot, whycan.bmp.gz, dtb,kernel, rootfs 到 flash_16m.bin ###
dd if=notrunc if=u-boot-sunxi-with-spl.bin of=flash_16m.bin seek=0
dd if=notrunc if=whycan.bmp.gz of=flash_16m.bin bs=$((0x060000)) seek=1
dd if=notrunc if=suniv-f1c100s-licheepi-nano-800480.dtb of=flash_16m.bin bs=$((0x100000)) seek=1
dd if=notrunc if=zImage of=flash_16m.bin bs=$((0x110000)) seek=1
dd if=notrunc if=jffs2.bin of=flash_16m.bin bs=$((0x510000)) seek=1
16M w25q128 一体烧录文件下载: flash_16m.7z
烧录指令:
sunxi-fel -p spiflash-write 0x000000 flash_16m.bin
感谢 @xm1994 发帖:
终于搞好了荔枝派nano linux uboot瘦身 + usb gadget hid + gt911触控 + littlevgl demo ( https://whycan.cn/t_2688.html )
参考上面的帖子, 弄了一个 5寸的 800x480 的 f1c100s 固件, 支持usb: suniv_f1c100s_w25q128_usb_lcd_ok_20190722.7z
登陆账号: root
登陆密码: whycan.cn (帮晕哥做个广告)
这是我花10秒钟用windows画图为 @晕哥 量身定做的logo, 哈哈哈 ^_^
这是在LCD上的效果:
使用说明.txt:
目前支持 w25q128, 其他 flash 未测, 烧录命令:
sunxi-fel -p spiflash-write 0x000000 u-boot-sunxi-with-spl.bin
sunxi-fel -p spiflash-write 0x060000 whycan.bmp.gz
sunxi-fel -p spiflash-write 0x110000 zImage
sunxi-fel -p spiflash-write 0x100000 suniv-f1c100s-licheepi-nano-800480.dtb
sunxi-fel -p spiflash-write 0x510000 jffs2.bin
2019-09-01 25楼 更新:
-----------------------------------------------
16M spiflash adb & emwin 版本下载: suniv_f1c100s_w25q128_usb_adb_emwin_20190901.7z
128M tfcard adb & emwin 版本下载: suniv_f1c100s_128M_tfcard_usb_adb_emwin_20190901.7z
2019-10-22 43楼 更新:
-----------------------------------------------
120M tfcard ATWK 演示版本下载: f1c100s_linux_awtk_dump_20191022.7z
/awtk/bin/smartwatch 是手表演示程序.