==Introduction== 提供给土耳其公交车刷卡机项目。 ==Novotech 人员== *项目对接商务:温副总,曹一凌 *PM: 宋宜兵/曹一凌 *硬件Design:宋宜兵 *硬件辅助:巩工 *Layout 相关:朱永佳 *BSP: supercat *Test Software: supercat ==系统交付需要== #Engineering Spec #Schematics DSN #Layout Broad file #BBU Report #MTBF (By Adlink) #Derating (By Adlink) #SI/PI #Pre-scan Cert (EMC, EMI) #Temp/Humi Test #DVT (Design for Manufacturing) #Uboot source (tarball + binary) #kernel 3.0.35 (tarball + binary) #Ubuntu 14.04 ARM #System Functional Full Test Software ==时间进度== week 0 = 2016-03-15, wk1意思是第一周结束。 ===Hardware=== #硬件需求: wk1 #Schematics: wk2 (pre-BOM ready) #Layout: wk4 #Geber Out: wk5 #A1 PCB FAB: wk7 #A1 Build(SMT): wk8 #A1 DVT, PI, SI, 环测, pre-scan: wk12 #A1 Bug: wk13 #A2 PCB FAB: wk17 #A2 build: wk18 #A2 BBU: wk19 #A2 Test: wk22 #Design Fix: wk23 ===Software=== #uboot + kernel: wk3 #ubuntu: wk4 #Test Software: wk10 ==Engineering Spec== #处理器:i.MX6 DL (Extended Consumer)。 #系统内存:1GiB DDR3 (64 bit)。 #非易失性随机存储器:FRAM 大于32KB。 #数据存储器:最小8GB eMMC。 #直流输入: #*直流电压范围:6V~36V或9V~36V或6V~40V; #*过压保护,过流保护,过热保护; #*软件控制电源管理,如电压,超时; #*软件控制看门狗复位; #显示: #*主板必须支持4.3寸、5.7寸、7寸LCD显示屏; #*触摸板支持4.3寸、5.7寸、7寸电阻屏; #*软件控制LCD电源开关以及亮度调节; #*两路LCD,HDMI独立输出; #串行口: #*COM1:RS-232(抗震性,500mA@5V输出,具有5V和GND插脚); #*COM2:RS-232(抗震性,RTS/CTS)和RS485(静电防护:接触±8KV,空气±15KV); #*COM3:RS-232作为调试接口。 #Wi-Fi: #*必须板载或者模块形式存在; #*支持802.11 b/g(支持WPA2),内置或外接2dB增益天线; #*支持蓝牙4.0 LE或以上。 #WWAN: #*UMTS/HSPA+; #*软件控制开关或复位; #*内置3dB增益天线; #*板载SIM槽(USB+SIM); #*MC8090模块。 #RTC: #*带备用电池的RTC; #*音频输出:双路2瓦8欧姆立体声; #LED/GPIO: #*4路数字可编程LED输出; #*4路光耦隔离开集电极输出; #*4路24V隔离输入; #*以上输入输出口需支持静电防护:接触±8KV,空气±15KV; #接口: #*1路Micro HDMI(非焊接,静电防护:接触±8KV,空气±15KV); #*4路USB 2.0 Host(所有通道共2A输出,静电防护:接触±8KV,空气±15KV); #*1路USB2.0 OTG(Micro USB,静电防护:接触±8KV,空气±15KV); #*10/100M以太网或以上; #*Micro SD卡座; #连接器: #*2个扬声器接口; #*2个PCIe接口; #*1个复位按键; #*Power/IGN,GPIO、COM口、USB口用同样类型的接口,LAN用小型接口; #*4路LED输出应在同一个连接器上; #*SIM槽; #使用温度:-10℃~+70℃; #储存温度:-20℃~+90℃/相对湿度10%~90%(无凝结); #EMC:必须有2006/28/EC Automotive directive ECE R10Emission(Radiated and conducted)and Immunity(Radiated,conducted and pulse(ISO 7637-2 Pulse 1,2a,3a,3b and 4))。 ==内部技术细节== ===STM32 电源管理=== ==测试软件需求== ==硬件说明== *GPIO口 {| class="wikitable sortable" |- ! GPIO !! I/O !! Function |- |EIM_A16 ||输出||连接器J19第4 PIN,EIM_A16高电平时输出低电平,低电平时输出高阻状态 |- |EIM_A17 ||输出||连接器J19第3 PIN,EIM_A17高电平时输出低电平,低电平时输出高阻状态 |- |EIM_A18 ||输出||连接器J19第2 PIN,EIM_A18高电平时输出低电平,低电平时输出高阻状态 |- |EIM_A19 ||输出||连接器J19第1 PIN,EIM_A19高电平时输出低电平,低电平时输出高阻状态 |- |EIM_D16 ||输入||连接器J19第9 PIN 高,EIM_D16 低电平,连接器J19第9 PIN 低,EIM_D16 高电平, |- |EIM_D17 ||输入||连接器J19第8 PIN 高,EIM_D17 低电平,连接器J19第8 PIN 低,EIM_D17 高电平, |- |EIM_D18 ||输入||连接器J19第7 PIN 高,EIM_D18 低电平,连接器J19第7 PIN 低,EIM_D18 高电平, |- |EIM_D20 ||输入||连接器J19第6 PIN 高,EIM_D20 低电平,连接器J19第6 PIN 低,EIM_D20 高电平, |- |KEY_COL7 ||输出||连接器J12第5 PIN,KEY_COL7高电平时输出高电平,低电平时输出高阻状态,用于控制LED灯 |- |GPIO_19 ||输出||连接器J12第4 PIN,GPIO_19 高电平时输出高电平,低电平时输出高阻状态,用于控制LED灯 |- |KEY_COL1 ||输出||连接器J12第3 PIN,KEY_COL1高电平时输出低电平,低电平时输出高阻状态,用于控制LED灯 |- |KEY_ROW1 ||输出||连接器J12第2 PIN,KEY_ROW1高电平时输出低电平,低电平时输出高阻状态,用于控制LED灯 |} *外设 #AUDIO ##声卡 WM8962ECS/R,IIS AUD3,IIC 口 I2C1,同电视机单板。声卡供电使能GPIO:KEY_COL2,高电平使能声卡供电,低电平声卡断电。 ##功放 TDA7491LP 静音控制 GPIO_9,低电平静音,高电平 播放;待机 控制 GPIO_8,低电平待机,高电平工作 #网卡 LAN8720A-CP-TR,使能CPU内部时钟,同电视机单板 #串口 ##COM2 J5端子,EIM_D27 为 UART2_RXD, EIM_D26 为 UART2_TXD,EIM_D28 高电平,使能 J5端子5V 供电,EIM_D28 低电平,J5 端子 5V 断电 ##COM3 EIM_D25 为 UART3_RXD,EIM_D24 为 UART3_TXD,EIM_EB3 为 UART3_RTS_B,EIM_D23 为 UART3_CTS_B.COM3可以通过跳线帽配置成485 ##COM1 UART1 调试口 #USB HUB .HUB IC USB2517i-JZX,1 转 8 #LCD ##7寸,型号 AM-800480R3TMQW-TA1H,IMX6 接口 LVDS0,背光LED 控制 PWM2 (SD1_DAT2) ##'''5.7CUN ,型号 G057VN01 V2,RGB666 屏,IMX6接口 DISP0,背光LED 控制 PWM1 (SD1_DAT3),20Khz,为系统的主要用屏,640 x 3(RGB) x 480''' ##HDMI ##4.3寸 #TOUCH 芯片 TSC2007IPW,imx6 I2C2,INT EIM_D30 #RTC 芯片 BQ32000DR,IMX6 I2C3 #FRAM 芯片 FM24V10,IMX6 I2C2 #3G模块 SD1_DAT0 控制 W_DISABLE_N,SD1_CLK 控制 WAKE_N,KEY_ROW7控制 SYSTEM_RESET_N。AUD4 传输 语音 #WIFI & BT,CSI0_DATA_EN 控制 PCIE_WAKE_B, KEY_COL4 控制 W_DISABLE;GPIO_17 控制 RESET;KEY_ROW6控制BT_DISABLE;PCIE 和 USB 传输 WiFi 蓝牙数据,EIM_D19 控制模块供电,高电平模块供电,电平模块断电。 #看门狗 同电视机单板 #电源控制 STM32103C8T6,imx6 串口 UART4 与STM32通讯,KEY_COL0 TXD,KEY_ROW0 rxd ==DDR Stress Test== Use Freescale Stress Tester v2.52 ==SOP== ===从SD卡中更新IMAX6固件=== *1、将拨码开关设置成“01000101”(代表从SD卡启动固件)。 [[File:10.png]] *2、接好电源线、串口线(控制台)、网口线、USB线、屏数据线、屏触摸线、屏背光线,插好SD卡。 [[File:13.png]] *3、打开电源,启动程序至控制台上显示根文件系统登录界面,输入用户名:“root”,输入密码:“123456”。 [[File:17.png]] *4、在控制台中输入“mac_register.sh”,加回车,执行获取mac地址脚本。 [[File:7.png]] *5、等到输入提示信息后,输入LF条码中的序列号,加回车,即可从服务器中获取到MAC地址。 [[File:8.png]] *6、贴上获取到的MAC地址标签。 [[File:6.png]] *7、在控制台中输入“burn_image.sh”,加回车,将固件从SD卡烧写到EMMC中(过程大约7分钟),控制台返回至命令行状态后烧写结束。 [[File:19.png]] *8、查看屏幕上的硬件测试结果(上电后自动测试,时间大约8分钟)。 [[File:18.png]] *9、关闭电源、取出SD卡,设置拨码开关为“11011101”(代表从EMMC中启动固件)。 *10、打开电源,重新启动,启动成功则表示更新IMAX固件成功。 ===更新STM32固件=== *1、将JLINK的JTAG口连接至主板的J17号排针,将JLINK的USB口连接到电脑。 [[File:14.png]] *2、打开J-FLASH ARM固件更新工具。 [[File:15.png]] *3、点击工具栏file->open project,选择STM32F103C8.jflash文件,打开。 [[File:12.png]] *4、点击工具栏file->open file data,选择需要更新的固件,打开。 [[File:9.png]] *5、点击工具栏target->auto,将自动更新固件至完成。 [[File:11.png]] ===Update IMAX6 Firmware From SD Card=== * 1, Set the DIP switch to "01000101" (means boot firmware from the SD card). [[File:10.png]] * 2, Connect the power cable, serial cable (for console), network interface cable, USB cable, screen data cable, screen touch cable, screen backlight cable and plug the SD card. [[File:20.png]] * 3, Turn on the power, then the program starts to a console which displays the login prompt. Enter the user name: "root", password: "123456." [[File:17.png]] * 4, Enter "mac_register.sh"in the console, and enter the return key, to execute the getting mac address script. [[File:7.png]] * 5, Wait for the input prompt, enter the serial number in the LF bar code, and enter the return key, you can get the MAC address showing in the screen from the server. [[File:8.png]] * 6, Paste the corresponding MAC address label to the main board. [[File:6.png]] * 7 Enter "burn_image.sh"in the console, nd enter the return key, to program the firmware from the SD card to the EMMC (this process lasts about 7 minutes), the console returns to the command line after the end of the programming. [[File:19.png]] * 8 Examine hardware test results on the viewing screen (this automatic test last about 8 minutes). [[File:18.png]] * 9, Turn off the power, remove the SD card, set the DIP switch to "11011101" (means boot firmware from the EMMC). * 10,Turn on the power, the successful restart indicates that the firmware update is ok. ===Updata STM32 firmware=== * 1, Connect the JLINK to the main board's connector J17, connected the JLINK to the computer's USB port. [[File:14.png]] * 2, Open the J-FLASH ARM firmware update tool. [[File:15.png]] * 3, Click on the toolbar file-> open project, select the file which name is "STM32F103C8.jflash", and open. [[File:12.png]] * 4, Click on the toolbar file-> open file data, select the firmware that needs to programmed, and open. [[File:9.png]] * 5, Click on the toolbar target-> auto, updates the firmware to complete automatically. [[File:11.png]] ===A20 Hardware Debug=== * DDR Layout Error in layer 5(DDR Line reference Layer not continue,[[change VDDSOC layout]]) [[File:ddr.jpg]] * Net CT power source not use the same,([[change ct from VGEN_3V3 to VGEN6_3V3]]) * Ethernet LED2 use error,([[change R412 pin2 from gnd to VDD_PHYA]]) * Ethernet INT not connect to iMX6,([[add iMX6 GPIO connect to nINT]]) * NET 3V3 noise 100mV,([[add 47uF CAP to 3V3 close to U18]]) * net POR_B add CAP 4.7uF to delay Reset time * LCD Backlight 12V add Bead to fine tune power noise ==POEWER SYSTEM MANAGEMENT PROTOCL== 注:以下所有字节均为16进制 数据查询: IMA6发送:5a 5b 01 5c 5d IMA6接收:51 52 01 xx xx(cut_power_delay) xx xx(bat_low_delay) xx xx(bat_low_level) xx xx(ign_off_delay) xx xx(ign_on_delay) xx xx(fw_ver) xx xx(ign_status) xx xx(ign_vol) xx xx(vbat_vol) 53 54 数据设置: 设置cut_power_delay IMA6发送:5a 5b 02 01 xx xx(cut_power_delay) 5c 5d IMA6接收:51 52 02 01 5c 5d 设置bat_low_delay IMA6发送:5a 5b 02 02 xx xx(bat_low_delay) 5c 5d IMA6接收:51 52 02 02 5c 5d 设置bat_low_level IMA6发送:5a 5b 02 03 xx xx(bat_low_level) 5c 5d IMA6接收:51 52 02 03 5c 5d 设置ign_off_delay IMA6发送:5a 5b 02 04 xx xx(ign_off_delay) 5c 5d IMA6接收:51 52 02 04 5c 5d 设置ign_on_delay IMA6发送:5a 5b 02 05 xx xx(ign_on_delay) 5c 5d IMA6接收:51 52 02 05 5c 5d 关机命令: IMA6接收:51 52 03 00 53 54 IMA6发送:5a 5b 03 00 5c 5d ===REFERANCE TABLE=== [[File:27.png]] ==Test Tools== '''Audio Test''' * 播放正弦波测试音源命令: 1.gst-launch-1.0 audiotestsrc ! alsasink & * speaker-test工具: 1.常用命令: speaker-test [-t ][-f ] Notes:pink--白噪声 sine-正弦波 -f 设置正弦波频率 '''LCD Test''' * 双屏显示(5.7''LCD&HDMI输出): 1.首先启动进入U-Boot命令行界面设定以下参数: set video 'video=mxcfb0:dev=lcd,VGA,if=RGB666 video=mxcfb1:dev=hdmi,1280x720M@60,if=RGB24 video=mxcfb2:off video=mxcfb3:off consoleblank=0 fbmem=28M ldb=sep0' saveenv 2.编写QT5程序(例如qthello),然后输入以下命令往HDMI输出数据: qtheollo -platform linuxfb:fb=/dev/fb2 3.qthello例子代码如下: #include #include #include int main(int argc, char *argv[]){ QApplication app(argc, argv); QWidget window; QLabel label("Hello, world!\n", &window); window.setWindowState(Qt::WindowFullScreen); window.show(); return app.exec();} 4.编译流程如下: a.qmake -project #会生成qthello.pro文件,pro文件中需手动增加QT += widgets配置 b.qmake qthello.pro c.make ==How to make images for MFGtools== ===cross compiler=== Ubuntu Version: 14.04 install host dependencies sudo apt-get install gparted git build-essential libncurses5 wget u-boot-tools ncurses-dev cmake libc-dev-armhf-cross pkg-config-arm-linux-gnueabihf build-essential pkg-config lzop libc6 libstdc++6 debootstrap qemu-user-static binfmt-support libstdc++6:i386 libc6:i386 gcc-multilib zlib1g-dev zlib1g:i386 install acutal cross-compiler sudo su # become root user cd /opt/ wget -c https://releases.linaro.org/archive/13.06/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.8-2013.06_linux.tar.xz tar vxf gcc-linaro-arm-linux-gnueabihf-4.8-2013.06_linux.tar.xz echo "PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2013.06_linux/bin/:$PATH" >> ~/.bashrc ===uboot=== cd ~/ wget –c http://f.g77k.com/files/v20170411/imx6_uboot_kernel/src/uboot-imx-oneminute-src.tar.xz tar -vxf uboot-imx-oneminute-src.tar.xz cd uboot-imx ./build.sh # u-boot.imx is your file in the current directory ===kernel=== wget –c http://f.g77k.com/files/v20170411/imx6_uboot_kernel/src/imx-linux-3.0.35-oneminute-src.tar.xz tar -vxf imx-linux-3.0.35-oneminute-src.tar.xz cd imx-linux-3.0.35 ./prebuild.sh ./build.sh #mod.tar.gz and uImage in the deploy directory #change mod.tar.gz to modules.tar.gz ===rootfs=== #use supplied pre-compiled Ubuntu image as rootfs.tar.gz ===your sample app=== Boot up your i.mx6 board and install #(on ARM) apt-get install build-essential ... wget #your source cd make make install