=Introduction= =Hardware= {| border="0" cellpadding="10" width="100%" |- |width="32%" valign="top" align="left"| ==Blue Print== ===Block Diagram=== ===Specifications=== ===Module Size=== ===Layout=== # U8207 Fix PCB footprint # SMT Column change to 2mm(3.7mm PCB footprint) # Add Bead B1 to M.2 RF module VDD from Battery # Add nmos Q5009,Q5010 to D1,D2 signal # Add R9338 for NTC on board # change MCU VDD from VBAT to VCC_SYSIN # change Battery CONN from 1.25mm Pitch to 1.5mm Pitch(1511) # add R9339 0402 # change R9332,R9338 PCB footprint from 0402 to 0603 # move J54 0.3mm in PCB board # Add Q5011,Q5012,R9340,R9341,C9998 for Disable Charger # Add D5011,R9342,R9343,C9999 for Charger wakeup MCU # del U103,C526,C287,C288 # Add J55,J56,J57 # change J7 Hole to 0.9mm ===BOM=== # change Battery CONN to 1.5mm Pitch(1511) # add Q5009,Q5010 # change R9327,R3928 from 22R to 10K # change R113 from 270K to 180K # change R9330 from 120K to 180K # del R9318 # del L6101 # add R9339 510R # change R9294 from 240K to 110K # change R9296 from 51K to 18K # del L12 # del U103,C526,C287,C288 ===GPIO Description=== {| class="wikitable" style="text-align:center" |+RF Module !Function !GPIO !Direction !Description |- |RF_RST |GPIO0_B0 |Output |Active:H |- |RF_PWR_EN |GPIO4_C2 |Output |Active:H |- |RF_Airplane-mode_EN |GPIO4_C4 |Output |Active:L |- |RF_wakeup |GPIO4_C3 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+5V Boost for USB HOST and HDMI !Function !GPIO !Direction !Description |- |Boost_EN |GPIO4_D2 |Output |Active:H |- |USB_PWR_EN |GPIO0_A5 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+WiFi/BT !Function !GPIO !Direction !Description |- |WiFi_REG_EN |GPIO2_B1 |Output |Active:H |- |WiFi_Wake_Host |GPIO2_B2 |Input |Active:H |- |BT_Wake_Host |GPIO2_C0 |Input |Active:H |- |Host_Wake_BT |GPIO2_C1 |Output |Active:H |- |BT_RST |GPIO2_B7 |Output |Active:L |- |32K_CLK_OUT |GPIO2_C6 |Output |Active:Edge |- |SDIO_CLK |GPIO2_B0 |Output |Active:Edge |- |SDIO_CMD |GPIO2_A7 |Input/Output |Active:H |- |SDIO_D0 |GPIO2_A3 |Input/Output |Active:H |- |SDIO_D1 |GPIO2_A4 |Input/Output |Active:H |- |SDIO_D2 |GPIO2_A5 |Input/Output |Active:H |- |SDIO_D3 |GPIO2_A6 |Input/Output |Active:H |- |UART1_RX |GPIO2_B3 |Input |Active:L |- |UART1_TX |GPIO2_B4 |Output |Active:L |- |UART1_RTS |GPIO2_B5 |Input |Active:L |- |UART1_CTS |GPIO2_B6 |Output |Active:L |- |} {| class="wikitable" style="text-align:center" |+RGMII !Function !GPIO !Direction !Description |- |RGMII_MDC |GPIO4_B6 |Output |Active:Edge |- |RGMII_MDIO |GPIO4_B7 |Input/Output |Active:L |- |RGMII_INT |GPIO3_D3 |Input |Active:H |- |RGMII_RST |GPIO4_C0 |Output |Active:L |- |RGMII_MCLK |GPIO4_C1 |Input |Active:Edge |- |RGMII_TXEN |GPIO4_A6 |Output |Active:H |- |RGMII_TXCLK |GPIO4_A0 |Output |Active:Edge |- |RGMII_TXD0 |GPIO4_A4 |Output |Active:H |- |RGMII_TXD1 |GPIO4_A5 |Output |Active:H |- |RGMII_TXD2 |GPIO3_D6 |Output |Active:H |- |RGMII_TXD3 |GPIO3_D7 |Output |Active:H |- |RGMII_RXDV |GPIO4_B1 |Input |Active:H |- |RGMII_RXCLK |GPIO4_A3 |Input |Active:Edge |- |RGMII_RXD0 |GPIO4_A7 |Input |Active:H |- |RGMII_RXD1 |GPIO4_B0 |Input |Active:H |- |RGMII_RXD2 |GPIO4_A1 |Input |Active:H |- |RGMII_RXD3 |GPIO4_A2 |Input |Active:H |- |} {| class="wikitable" style="text-align:center" |+SGMII !Function !GPIO !Direction !Description |- |SGMII_MDC |GPIO2_C3 |Output |Active:Edge |- |SGMII_MDIO |GPIO2_C4 |Input/Output |Active:L |- |SGMII_INT |GPIO3_C7 |Input |Active:H |- |SGMII_RST |GPIO3_C6 |Output |Active:L |- |} {| class="wikitable" style="text-align:center" |+I2C !Function !GPIO !Direction !Description |- |I2C4_SCL |GPIO4_B3 |Output |Active:Edge |- |I2C4_SDA |GPIO4_B2 |Input/Output |Active:L |- |} {| class="wikitable" style="text-align:center" |+CAN !Function !GPIO !Direction !Description |- |CAN2_TX |GPIO4_B5 |Output |Active:L |- |CAN2_RX |GPIO4_B4 |Input |Active:L |- |} {| class="wikitable" style="text-align:center" |+UART !Function !GPIO !Direction !Description |- |UART9_TX |GPIO4_C5 |Output |Active:L |- |UART9_RX |GPIO4_C6 |Input |Active:L |- |UART3_TX |GPIO1_A1 |Output |Active:L |- |UART3_RX |GPIO1_A0 |Input |Active:L |- |} {| class="wikitable" style="text-align:center" |+LED !Function !GPIO !Direction !Description |- |LED1_PWM |GPIO0_C7 |Output |Active:H |- |LED2_PWM |GPIO0_C4 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+IRDA !Function !GPIO !Direction !Description |- |IR_RX |GPIO0_C6 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+Vcore PWM !Function !GPIO !Direction !Description |- |CPU_CORE_PWM |GPIO0_C0 |Output |Active:H |- |GPU_CORE_PWM |GPIO0_C1 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+MCU !Function !GPIO !Direction !Description |- |UART4_TXD |GPIO1_A6 |Output |Active:L |- |UART4_RXD |GPIO1_A4 |Input |Active:L |- |PWR ON/#OFF STAT |GPIO1_B2 |Output |Active:H |- |} {| class="wikitable" style="text-align:center" |+Home Lite LED GPIO !Function !GPIO !Direction !Description |- |LINK_LED |GPIO0_C4 |Output |Active:H |- |Charge_LED |GPIO0_C7 |Output |Active:H |- |} ===Front View=== ===Backend View=== ===Side View=== ==Test== ===Power Consumption=== {| class="wikitable" style="text-align:center" |+Idle Mode(unit:Watt) !w/o HDMI, Ethernet, WIFI, 4G !add HDMI !add USB Hub(Mouse+Keyboard) !add Ethernet 1 !add Ethernet 0 !add WIFI !add 4G |- |1.65 |2.35 |.285 |3.6 |4.5 |5.2 |/ |- |} {| class="wikitable" style="text-align:center" |+Work Mode(unit:Watt) - w/ HDMI, Ethernet, WIFI, USB Hub !CPU Full Load(stress -c 4) !GPU Heavy Load(glmark2 x3) !Iperf Test(Ethernet) !Iperf Test(Wifi) !4G Download !CPU + GPU + Iperf |- |7 |5.5 |5.5 |3.85 |/ |/ |- |} {| class="wikitable" style="text-align:center" |+Power Consumption Benchmark(unit:Watt) !G2L !RK3328 !RK3399 |- |2.4 |1.56 |2.3 |- |} ===Iperf Throughput=== {| class="wikitable" style="text-align:center" |+Ethernet 0 port(unit:Mbits/s)-TCP !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- |936 |925 |927 |928 |928 |937 |937 |937 |938 |938 |- |} {| class="wikitable" style="text-align:center" |+Ethernet 1 port(unit:Mbits/s)-TCP !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- |927 |927 |926 |925 |929 |926 |937 |938 |937 |938 |} {| class="wikitable" style="text-align:center" |+Wifi(unit:Mbits/s)-TCP !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- |28.3 |25.8 |28.3 |26.8 |27.5 |26.5 |27.8 |28.5 |26.7 |28.9 |- |} {| class="wikitable" style="text-align:center" |+Ethernet 0 port(unit:Mbits/s)-UDP(BER < 1%) !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- |898 |876 |836 |888 |845 |946 |948 |944 |946 |945 |- |} {| class="wikitable" style="text-align:center" |+Ethernet 1 port(unit:Mbits/s)-UDP(BER < 1%) !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- |719 |709 |694 |518 |939 |953 |954 |953 |952 |952 |- |} {| class="wikitable" style="text-align:center" |+Wifi(unit:Mbits/s)-UDP(BER < 1%) !colspan="5"|Send !colspan="5"|Receive |- |1 |2 |3 |4 |5 |1 |2 |3 |4 |5 |- |- | | | | | |31.1 |28.6 |21.8 |32.1 |26.7 |- |} {| class="wikitable" style="text-align:center" |+4G DL(unit:Mbps) !colspan="5"|SpeedTest |- |1 |2 |3 |4 |5 |- |- |16.09 |25.99 |13.63 |25.25 |22.1 |- |} {| class="wikitable" style="text-align:center" |+4G UL(unit:Mbps) !colspan="5"|SpeedTest |- |1 |2 |3 |4 |5 |- |- |41.37 |41.05 |43.75 |39.94 |42.43 |- |} ===PCIE Speed=== {| class="wikitable" style="text-align:center" |+NVME(unit:MB/s) !Brand !Model !Type !Write !Read |- |Samsung |MZ-VLW1280 |PM961 |190 |800 |- |- |Samsung |MZ-VL22560 |PM9A1 |580 |800 |- |} ===Environment Test=== {| class="wikitable" style="text-align:center" |+High Temperature Operate |- |硬件版本 |NT2109A1 |- |- |软件版本 |Linux OpenWrt 4.19.172-pcat #1 SMP Sat Oct 9 17:02:20 CST 2021 aarch64 GNU/Linux |- |- |测试设备 |TEMI580 |- |- |测试条件 |高温60度/湿度95% - 8小时 |- |- |供电 |5V Input |- |- |待测物状态 |正常工作(无WIFI/4G,无电池) |- |- |测试项目 |1.高温状态下冷启动20次 2.高温状态下上网功能正常 |- |- |测试结果 |PASS |- |} {| class="wikitable" style="text-align:center" |+Low Temperature Operate |- |硬件版本 |NT2109A1 |- |- |软件版本 |Linux OpenWrt 4.19.172-pcat #1 SMP Sat Oct 9 17:02:20 CST 2021 aarch64 GNU/Linux |- |- |测试设备 |TEMI580 |- |- |测试条件 |低温零下35度 - 8小时 |- |- |供电 |5V Input |- |- |待测物状态 |正常工作(无WIFI/4G,无电池) |- |- |测试项目 |1.低温状态下冷启动20次 2.低温状态下上网功能正常 |- |- |测试结果 |PASS |- |} {| class="wikitable" style="text-align:center" |+High Temperature Storage |- |硬件版本 |NT2109A1 |- |- |软件版本 |Linux OpenWrt 4.19.172-pcat #1 SMP Sat Oct 9 17:02:20 CST 2021 aarch64 GNU/Linux |- |- |测试设备 |TEMI580 |- |- |测试条件 |高温70度/湿度95% - 8小时 |- |- |供电 |无 |- |- |待测物状态 |未上电(无包装,有电池) |- |- |测试项目 |1.高温存储后取出静置2小时,测试功能和电池 |- |- |测试结果 |PASS |- |} ==Tips== ===Set usb mode to host=== #otg_mode switching echo host > /sys/devices/platform/fe8a0000.usb2-phy/otg_mode ===Battery protection board=== [[File:保护板.png]] ===Battery Connector=== #[[File:1D25.png]] #[[File:1511.png]] #[[File:XT30.png]] ===Fix samba not working on OpenWRT using kernel 4.19=== Use commands below:
uci set samba4.@samba[0].disable_async_io=1
uci commit
==build Android== get rk3568_android image on ubuntu 18.04 #ref1: https://source.android.com/setup/build/initializing #ref2: https://t.rock-chips.com/wiki.php?filename=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/Android ===pre install (u18)=== sudo apt-get update sudo apt-get install -y device-tree-compiler openjdk-8-jdk git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig liblz4-tool libssl-dev bc expect #if you are on ubuntu20.04 sudo apt-get install python-is-python3 install `repo` command mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo echo 'PATH=~/bin:$PATH' >> .bashrc ===fetch code=== repo init --repo-url https://github.com/aosp-mirror/tools_repo.git -u https://github.com/rockchip-toybrick/manifests.git -b develop-11.0 -m default.xml --depth=1 .repo/repo/repo sync ===build=== source build/envsetup.sh lunch #choose 24 ./build.sh -AUCKu -d rk3568-gw =Resource= *[[User Manual]] =Modem Firmware Update= Please DON'T POWER OFF the device during the firmware updating! And make sure the device has enough battery power to finish the updating (above 30%). ===Quectel EM05=== cd /tmp wget https://dl.photonicat.com/firmware/Quectel-EM05-update.tar.gz tar -xzf Quectel-EM05-update.tar.gz cd Quectel-EM05-update ./update.sh ===Quectel RM500U=== cd /tmp wget https://dl.photonicat.com/firmware/RM500U-update.tar.gz tar -xzf RM500U-update.tar.gz cd RM500U-update ./update.sh = 通讯协议 = == RK3568 与 电源充电控制板卡通讯协议 == ===物理层协议=== *通过串口通讯,115200波特率,校验位无,数据位8位,停止位1位 ====帧格式表==== {| class="wikitable sortable" |- ! 起始位 !! 数据位 !! 校验位置 !! 结束位置 |- |0xA5,一个字节长度||见数据位表,变长||数据位(从数据位开始到数据位结束)的CRC校验,2个字节长度,低位在前,高位在后||0x5A,一个字节长度 |} =====数据位表===== {| class="wikitable sortable" |- ! 数据来源地址 !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容 |- |0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板,'''目前只有一块RK3568 CPU 板子,只用到0x01''';
'''0x81表示 电源充电控制板''',一个字节||0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板'''目前只有一块RK3568 CPU 板子,只用到0x01''';
0x81表示 电源充电控制板''';
0x80表示目的地址是广播给所有的CPU电路板,0xfe表示目的地址是所有的RA2E1电路板,0xff表示广播给系统中所有设备,其他地址备用,一个字节长度||主动发送数据设备没发送一次数据加一个,两个字节,低位在前,高位在后(大于0xffff,清零),接收需要返回数据同数据返回||数据命令以及数据内容部分数据长度,两个字节,低位在前,高位在后||见数据命令以及数据内容表,变长 |} ====数据命令以及数据内容表==== {| class="wikitable sortable" |- ! 命令序号(定长,两个字节低位在前,高位在后),第7-8位 !! 命令内容(变长,0到n个字节),第9位开始 !! 是否需要回复(定长,1个字节) |- |1,CPU发送心跳||无||1表示需要返回,0表示无需返回 |- |2,RA2E1应答心跳||0(超过1分钟没有收到任何数据,RA2E1重启CPU)||0表示无需返回 |- |3,CPU读取RA2E1硬件版本||数据长度0|1表示需要返回,0表示无需返回 |- |4,RA2E1应答上传硬件版本||例如,"NT2109A2",8个字节长度||0表示无需返回 |- |5,CPU读取RA2E1软件版本||无||1表示需要返回,0表示无需返回 |- |6,RA2E1应答上传软件版本||例如,"RA2E1211214001",14个字节长度||0表示无需返回 |- |7,RA2E1上报状态|| 电池电压(2个字节,低位在前,高位在后,单位mV);充电器接口电压(2个字节,低位在前,高位在后,单位mV);输入GPIO状态(2个字节,见GPIO输入状态表),输出GPIO状态(2个字节,见输出GPIO状态表);系统时间(年、月、日、时、分、秒、礼拜(年两个字节,其余1个字节,一个8个字节)); RTC状态(1个字节,0表示RTC正常,1,RTC初始化异常,2,没有秒中断,3,没有分钟中断);板子温度,一个字节长度,实际温度+40,比如:20表示,-20℃,60表示20℃||1表示需要返回,0表示无需返回 |- |8,CP回复||无||1表示需要返回,0表示无需返回 |- |9,CPU设置RA时间||年、月、日、时、分、秒(年2个字节,其他一个字节,一个7个字节)||1表示需要返回,0表示无需返回 |- |10,RA2E1应答本||0数据正常,1错误||0表示无需返回 |- |11,CPU设置定时开机时间||年、月、日、时、分、星期(年2个字节,其他一个字节,一个7个字节(星期匹配需要匹配每位,例如B00000101,表示周日和2定时开机)),匹配设置,1个字节(bit0:年匹配;bit1:月匹配;bit2:日匹配;bit3:时匹配;bit4:分匹配;bit5:星期匹配;'''1设置为匹配,0设置为不匹配,其中分匹配必须为1,否则忽略此定时开机时间''')('''注:一次最多设置6个定时开机时间,并覆盖以前设置的开机时间,如果设置6个开机时间,此段数据长度位8*6=42个字节,也就是最长48个字节长度''')||1表示需要返回,0表示无需返回 |- |12,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |13,RA2E1发送关机命令||关机事件,一个字节,0,表示按键强制关机,1,表示电池低电压关机,2,表示升级前关机;3,其他关机||1表示需要返回,0表示无需返回 |- |14,CPU应答||0数据正常,1错误||0表示无需返回 |- |15,CPU发送关机命令||||1表示需要返回,0表示无需返回 |- |16,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |17,RA2E1恢复出厂设置||||1表示需要返回,0表示无需返回 |- |18,CPU应答||0数据正常,1错误||0表示无需返回 |- |19,CPU发送设置看门狗时间命令||系统开启超时时间,一个字节;系统关机超时时间,一个字节;系统启动成功后,喂狗超时时间,一个字节||1表示需要返回,0表示无需返回 |- |20,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |21,CPU发送设置充电开机配置||一个字节长度,0,插上充电器后,不自动开机(如果机器关机时因为低电压关机,此配置情况下,插上充电器后还开机),1、插上充电器后开机。其他数据无效||1表示需要返回,0表示无需返回 |- |22,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |23,CPU设置电压阀值||电压高指示阀值,2个字节,默认3850;电压中指示阀值,默认3700;电压低指示阀值,3600;插充电器开机电压,默认3400;充电器在充电器电压阀值,4500;充电器不在时关机电池阀值,3450;工作中,电池电压低电压提示电压阀值,3600;充电器大电流充电电压阀值,4700;开机后,电池电压持续超过15分钟满电压阀值,4140。一共18个字节,默认电压正负1000mV值范围内设置有效,如设置超出范围则使用默认值 ||1表示需要返回,0表示无需返回 |- |24,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |25,CPU设置网络指示灯状态||高电平持续时间(2个字节,单位10ms),低电平持续时间(2个字节,单位10ms),变换次数(2个字节,次数到达后,保持低电平,0表示一直高低电平变换) ||1表示需要返回,0表示无需返回 |- |26,RA2E1应答||0数据正常,1错误||0表示无需返回 |- |27,CPU读取RA2E1开机原因|| ||1表示需要返回,0表示无需返回 |- |28,RA2E1U应答||一个字节,1,表示按键开机,2,表示定时开机,3,插上charge车载模式开机,4,低电压关机,插上charge后,电压满足条件开机5,无电池开机||0表示无需返回 |- |127|| || |- |128|||| |- |129,CPU发送升级MCU固件指令|| ||1表示需要返回,0表示无需返回 |- |130,RA2E1U应答||一个字节,0,表示正常,其他表示错误(正常时,MCU会发送请求关机指令,收到应答或者超时情况下,断开CPU电,并MCU重启,进入bootloader,进入升级流程)||0表示无需返回 |- |131,MCU提出升级MCU固件|| ||1表示需要返回,0表示无需返回 |- |132,CPU应答||一个字节,0,表示正常,其他表示错误(应答错误情况下,MCU和CPU退出更新MCU固件流程)||0表示无需返回 |- |133,CPU 发送固件大小||4字节长度,低位在前,高位在后 ||1表示需要返回,0表示无需返回 |- |134,MCU应答||一个字节,0,表示正常,其他表示错误(应答错误情况下,MCU和CPU退出更新MCU固件流程)||0表示无需返回 |- |135,CPU 发送固件数据||见CPU发送代码数据给MCU数据内容表 ||1表示需要返回,0表示无需返回 |- |136,MCU应答||MCU应答CPU发送代码数据给MCU表||0表示无需返回 |- |137,CPU 发送数据升级完毕|| ||1表示需要返回,0表示无需返回 |- |138,MCU应答||一个字节,0,表示正常,其他表示错误||0表示无需返回 |- |139,CPU 获取硬件GPIO状态|| ||1表示需要返回,0表示无需返回 |- |140,MCU应答||一个字节,bit0,bit1,bit2分别代表P012,P102,P103电平状态,其他预留||0表示无需返回 |- |141,CPU设置充电时读取电压时间间隔||一个字节长度,单位10S,默认30(即:300S,5分钟) ||1表示需要返回,0表示无需返回 |- |142,MCU应答||一个字节,0,表示正常,其他表示错误||0表示无需返回 |- |143,CPU设置充电电流||一个直接长度,0x01,关闭充电,0x02,小电流,0x03,大电流('''注意:设置为大电流充电时,如果充电器电压低于设置的大电流充电阀值,还是使用小电流充电''')||1表示需要返回,0表示无需返回 |- |144,MCU应答||一个字节,0,表示正常,其他表示错误||0表示无需返回 |- |145,CPU设置温度上限||rk关机温度,1个字节,默认75°,上限80°,下限55°;充电led提示不充电温度,1个字节,默认53°,上限60°,下限50°||1表示需要返回,0表示无需返回 |- |- |146,MCU应答||一个字节,0,表示正常,其他表示错误||0表示无需返回 |- |} =====CPU发送代码数据给CPU数据内容表===== {| class="wikitable sortable" |- ! 代码包序号 !! 代码数据 !! 校验 |- |0x0001,两个字节,高位在前,表示第一包数据,依次递增||代码数据,128个字节,不够128字节补充0xff||代码数据位(128个字节)CRC16校验,两个字节长度,高位在前,低位在后 |} =====MCU应答CPU发送代码数据表===== {| class="wikitable sortable" |- ! 代码包序号 !! 应答码 |- |0x0001,两个字节,高位在前,表示第一包数据,依次递增||0x00表示数据正常,0x01表示错误(第一帧数据错误,MCU退出升级流程,CPU也退出升级流程) |} ====GPIO输入状态表==== {| class="wikitable sortable" |- ! 状态数据!! 说明 !! 备注 |- |数据1,1个字节||bit0:WWAN_LED状态;bit1:RK PWR_STAT GPIO状态;bit2:BT_LED 状态;bit3:P012 GPIO状态;;bit4:WLAN GPIO 状态;bit5:P400 GPIO 状态;bit6:P102 GPIO状态;bit7:P103状态; |- |数据2,1个字节||bit6:充电IC D1 是否有变化状态,1有变化,0,无变化;bit7:充电IC D2 是否有变化状态,1有变化,0,无变化 |} ====GPIO输出状态表==== {| class="wikitable sortable" |- ! 状态数据!! 说明 !! 备注 |- |数据1,1个字节||bit0:PWR LED GPIO状态;bit1:LINK LED GPIO状态;bit2:BAT LED GPIO状态;bit3:RK 供电控制GPIO状态;bit4:POWER PATH SW控制GPIO状态;bit5:充电电流设置GPIO状态;bit6:RK download 控制GPIO状态 |- |数据2,1个字节|| |} = MCU功能描述 = === 按键功能定义 === {| class="wikitable sortable" |- ! 功能 !! 进入方式 !! 状态提示 |- |开机||长按3秒||电源灯常亮 |- |开机进入烧录模式||上电后等待6s左右后短按3下,再长按10秒以上||电源灯闪烁(0.25秒亮,0.25秒暗) |- |开机关闭看门狗||上电后等待6s左右后短按4下,再长按10秒以上||电源灯常亮,网络状态提示灯会闪烁一下 |- |开机恢复出厂设置||上电后等待6s左右后短按1下,再长按17秒以上||电源灯闪烁(0.5秒亮,0.5秒暗) |- |系统复位||上电后等待6s左右后短按5下,再长按17秒以上||电源灯、网络灯、充电灯同时亮0.2秒后熄灭 |- |关机||长按3秒||电源灯熄灭 |- |查看电量||短按1下||3个LED灯全闪2下,根据电量显示,3灯再次全闪2下退出(电量划分参见电量定义表) |- |} === 电量定义表 === {| class="wikitable sortable" |- ! 电量定义 !! 对应电压 !! 状态提示 |- |High(工作状态)|| 4.2 ~ 3.85V || 3灯常亮 |- |Mid(工作状态)|| 3.85 ~3.7V || 网络状态灯、充电灯常亮 |- |Low(工作状态)|| 3.7 ~ 3.6V || 充电灯常亮 |- |Critical(工作状态)|| <3.6V || 充电灯闪烁 |- |High(关机状态)|| 4.2 ~ 3.9V || 3灯常亮 |- |Mid(关机状态)|| 3.9 ~3.75V || 网络状态灯、充电灯常亮 |- |Low(关机状态)|| 3.75 ~ 3.65V || 充电灯常亮 |- |Critical(关机状态)|| <3.65V || 充电灯闪烁 |- |} === 开关机电压定义表 === {| class="wikitable sortable" |- ! 功能 !! 对应电压 !! 状态提示 |- |开机(电池)|| > 3.65V || 小于3.65V无法开机 |- |开机(电源适配器)|| > 3.4V || 小于3.4V无法开机 |- |rowspan=2|低电压关机|| < 3.45V(1分钟均值) || 电源灯熄灭 |- |< 3.6V(1分钟均值) 建议 || 电源灯熄灭 |- |} === 车载模式工作定义表 === {| class="wikitable sortable" |- ! 功能 !! 说明 |- |开机 || 插上充电器 |- |关机 || 拔出充电器 |- |无充电器状态下开机 || 长按3秒按键正常开机流程,开机后在充电器保持未插入的状态下不再主动关机,插入再拔出充电器后根据车载模式正常工作(逻辑在CPU上) |- |- |有充电器状态下关机 || 长按3秒按键正常关机流程,关机后在充电器保持现有状态的情况下不再主动开机,拔出再插入充电器后根据车载模式正常工作(逻辑在MCU上) |- |} Notes: 车载模式下定时开关机策略不生效 === 家庭版(无电池)功能删减定义 (基于A2版硬件)=== {| class="wikitable sortable" |- ! 功能点 !! 说明 |- |查看电量|| 取消 |- |充电提示 || 取消 |- |工作中低电量提示 || 取消 |- |工作中低电量关机 || 取消 |- |电池低电量无法开机 || 取消 |- |定时开关机 || 取消 |- |车载模式 || 取消 |- |电池电压读取上报 || 取消 |- |进入烧录模式 || 变更为开机时长按电源键9秒进入 |- |进入恢复出厂模式 || 变更为开机后等待2秒再长按16秒进入 |- |开机方式 || 变更为5V供电后直接开机 |- |关机方式 || 变更为5V掉电后直接关机 |- |} #Notes:对应Web管理页面电量显示、充电提示和定时开关机模式等功能取消,建议MCU上报不同硬件版本。 #Notes:非家庭版的软件版本:RA2E1220702001。 #Notes:家庭版的软件版本:RA2E1220728001_HOME。 = 不良现象调试信息 = === 网络服务卡死 === #出现此现象时获取系统信息如下: ## dmesg信息显示wmi command 20488 timeout, restarting hardware和sdio irq disable request timed out(完整信息详见附件log) ## 查看cat /proc/interrupts | grep dw-mci,每秒中断增加近百万次 ## CPU占用率99% ## 查看任何网络相关指令无响应,无法中断(例如ifoncifg等) ::[https://w.g77k.com/images/2/2c/Dmesg_wifi_sdio_fail_d039.txt log:dmesg_wifi_sdio_fail_d039.txt] #SDIO CLK ::*测试样机系统版本:Linux photonicat-openwrt 6.1.8 #0 SMP Thu Mar 2 05:46:17 2023 aarch64 GNU/Linux(wifi fw no sleep) ::*WIFI模组SDIO CLK 375KHz [[file:sdio_clk_375khz_618_20230302_fw_nosleep_d039_poweron.png|center|]] ::*WIFI模组SDIO CLK 50MHz [[file:sdio_clk_50mhz_618_20230302_fw_nosleep_d039.png|center|]] ::*WIFI模组SDIO CLK 150MHz - 幅度偏小,峰峰值只有1V左右 [[file:sdio_clk_150mhz_618_20230302_fw_nosleep_d039.png|center|]] *开关多核 **关闭:echo 0 > /sys/devices/system/cpu/cpu1/online **开启:echo 1 > /sys/devices/system/cpu/cpu1/online = 无电池改装 = *删除B1(下图红框内)MPZ2012S300AT000 0805 30ohm@100MHz 6A *增加L12(下图蓝框内) 2.2uH 4mmx4mm 饱和电流>3A [[File:no-battery-wiki.png]]