INNOSTICK6/zh
Innostick 6是基于NXP公司ARM Cortx-A7系列最新处理器i.MX 6ULL的单板计算机,由纳行电子设计,生产和销售。
Innostick 6集易用性、便携性和可扩展性于一体,在一块80mm x 42mm的六层PCB板上,集成了DDR3,eMMC存储器以及WiFi/BT模块,同时还引出LCD显示接口,摄像头接口,USB Host以及USB OTG接口。其余接口均通过2.54mm插座引出,供用户扩展使用。
硬件
硬件特性
CPU |
NXP/Freescale ARM Cortex-A7 i.MX6ULL, 主频900MHz |
RAM |
512MB DDR3L |
Storage |
16GB/32GB eMMC |
通讯接口 |
|
LCD接口 |
24-Bit LCD 带4线电阻触摸屏输入 |
摄像头接口 |
8-Bit CSI Parallel input |
其他资源 |
|
扩展接口 |
50Pin扩展口P5
16Pin扩展口P6
*注:由于i.MX6ULL管脚复用的关系,列表中的功能无法同时全部得到。具体请参看INNOSTICK 6硬件手册 |
外形尺寸 |
80 x 42(mm) |
软件支持 |
|
功能框图
扩展接口P6
电源域 |
i.MX6ULL Alt5 Mode* |
信号名称 (Ball Name) |
Pin# |
信号名称 (Ball Name) |
i.MX6ULL Alt5 Mode* |
电源域 |
|
DC 3.3V 对外输出 |
|
VDD_3V3 |
1 |
2 |
ENET1_TX_CLK |
GPIO2_IO06 |
VDD_3V3 |
VDD_3V3 |
GPIO2_IO03 |
ENET1_TX_DATA0 |
3 |
4 |
ENET1_TX_DATA1 |
GPIO2_IO04 |
VDD_3V3 |
VDD_3V3 |
GPIO2_IO05 |
ENET1_TX_EN |
5 |
6 |
GND |
|
|
VDD_3V3 |
GPIO2_IO11 |
ENET2_TX_DATA0 |
7 |
8 |
ENET2_TX_DATA1 |
GPIO2_IO12 |
VDD_3V3 |
VDD_3V3 |
GPIO2_IO13 |
ENET2_TX_EN |
9 |
10 |
ENET2_TX_CLK |
GPIO2_IO14 |
VDD_3V3 |
|
|
GND |
11 |
12 |
GND |
|
|
VDD_3V3 |
GPIO2_IO10 |
ENET2_RX_EN |
13 |
14 |
ENET2_RX_DATA1 |
GPIO2_IO09 |
VDD_3V3 |
VDD_3V3 |
GPIO2_IO15 |
ENET2_RX_ER |
15 |
16 |
ENET2_RX_DATA0 |
GPIO2_IO08 |
VDD_3V3 |
- 注:更多复用功能,参看INNOSTICK6硬件手册
扩展接口P5
电源域 |
i.MX6ULL Alt5 Mode* |
信号名称 (Ball Name) |
Pin# |
信号名称 (Ball Name) |
i.MX6ULL Alt5 Mode* |
电源域 |
|
主电源 |
|
VDD_5V |
1 |
2 |
VDD_5V |
|
主电源 |
DC 3.3V输出 |
|
VDD_3V3 |
3 |
4 |
UART1_TX_DATA |
GPIO1_IO16 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO19 |
UART1_RTS_B |
5 |
6 |
UART1_RX_DATA |
GPIO1_IO17 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO18 |
UART1_CTS_B |
7 |
8 |
GND |
|
|
|
|
GND |
9 |
10 |
VDDA_3V3 |
|
AD转换器供电 |
VDD_3V3 |
GPIO1_IO05 |
GPIO1_IO05 |
11 |
12 |
GPIO1_IO06 |
GPIO1_IO06 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO07 |
GPIO1_IO07 |
13 |
14 |
GPIO1_IO08 |
GPIO1_IO08 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO09 |
GPIO1_IO09 |
15 |
16 |
GND |
|
|
|
|
GND |
17 |
18 |
JTAG_TDI |
GPIO1_IO13 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO10 |
JTAG_MOD |
19 |
20 |
JTAG_TDO |
GPIO1_IO12 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO15 |
JTAG_TRSTB |
21 |
22 |
JTAG_TCK |
GPIO1_IO14 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO11 |
JTAG_TMS |
23 |
24 |
GND |
|
|
|
|
GND |
25 |
26 |
SNVS_TAMPER2 |
GPIO5_IO02 |
VDD_SNVS_IN |
SNVS_LP供电 |
|
VDD_SNVS_IN |
27 |
28 |
PMIC_STBY_REQ |
|
VDD_SNVS_IN |
VDD_SNVS_IN |
|
PMIC_ON_REQ |
29 |
30 |
ONOFF |
|
VDD_SNVS_IN |
VDD_SNVS_IN |
|
POR_B |
31 |
32 |
GND |
|
|
|
|
GND |
33 |
34 |
NAND_READY_B |
GPIO4_IO11 |
VDD_3V3 |
VDD_3V3 |
GPIO4_IO12 |
NAND_WP_B |
35 |
36 |
NAND_CE0_B |
GPIO4_IO13 |
VDD_3V3 |
VDD_3V3 |
GPIO4_IO14 |
NAND_CE1_B |
37 |
38 |
NAND_CLE |
GPIO4_IO15 |
VDD_3V3 |
VDD_3V3 |
GPIO4_IO16 |
NAND_DQS |
39 |
40 |
GND |
|
|
|
|
GND |
41 |
42 |
ENET1_RX_DATA1 |
GPIO2_IO01 |
VDD_3V3 |
VDD_3V3 |
GPIO2_IO00 |
ENET1_RX_DATA0 |
43 |
44 |
UART4_RX_DATA |
GPIO1_IO29 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO28 |
UART4_TX_DATA |
45 |
46 |
UART2_RTS_B |
GPIO1_IO23 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO21 |
UART2_RX_DATA |
47 |
48 |
UART2_CTS_B |
GPIO1_IO22 |
VDD_3V3 |
VDD_3V3 |
GPIO1_IO20 |
UART2_TX_DATA |
49 |
50 |
GND |
|
|
- 注:更多复用功能,参看INNOSTICK6硬件手册
外形尺寸
快速入门
首次上电
出厂之前,Innostick 6的使用说明书,硬件手册,原理图,软件工具等产品资料都存储在板上eMMC内。用户在收到板子以后,请参照如下步骤取得这些资料并认真阅读。
准备工作
- 一块Innostick 6主板
- 一台Windows主机
进入U盘模式
1. 从防静电袋内取出Innostick 6主板,准备好两个2mm间距跳针帽和一条Micro-USB电缆
2. 安装J1跳针帽(Micro-USB供电)
Innostick 6供电由跳针J1选择,当安装J1跳针帽时,主电源VDD_5V和Micro-USB口(P1)5V电源输入短接,此时Innostick 6由Micro-USB电缆供电。
3. 安装J2跳针帽(J2-1和J2-2)(U盘模式)
J2是Innostick 6的引导模式选择跳针,具体选项如下表:
跳针帽位置 | 引导模式 |
1-2 | USB Memory Stick |
2-3 | SDP Manufacture Tools |
Open | Normal Boot |
4. 用Micro-USB电缆连接Windows主机和Innostick 6 P1口
此时Innostick 6上电启动,LED1开始闪烁。
5. 等待Windows识别出U盘设备
6. 由于Innostick 6主板上eMMC存在Linux分区,Windows无法识别这些分区,会出现如下提示:
7. 点击“取消”按钮
8. 查看Innostick 6板上FAT分区的内容,在这个例子中是F盘
9. 资料阅读完成以后右击F盘,选择“弹出”
ssh连接
Innostick 6上安装的Linux发布版都提供了USB RNDIS Gadget支持。用户可以通过ssh或者telnet和它建立连接,这时候Micro-USB电缆既提供电源,又提供网络通讯功能。
准备工作
- 一块Innostick 6主板
- 一台Windows主机
- Putty v0.66 from www.putty.org: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
- RNDIS驱动,当Windows无法自动识别RNDIS gadget设备时可以安装它:https://github.com/zhangzhian/LearningNotes/blob/master/res/RNDIS.7z
操作步骤
1. 在Windows主机上安装Putty
2. 安装J1跳针帽(Micro-USB供电)
3. J2跳针置空(“Normal Boot”模式)
4. 用Micro-USB电缆连接Windows主机和Innostick 6 P1口
此时Innostick 6上电启动,LED1开始闪烁。
5. 等待RNDIS Gadget设备被Windows识别
6. 右击USB Ethernet网卡
7. 设置TCP/IPv4属性
8. 启动Putty
9. 设置通讯参数
9. 输入用户名和密码
手动安装RNDIS驱动
有时Windows会错把RNDIS Gadget识别为一个串口设备,这时可以参看这个帖子:
windows系统RNDIS驱动手动安装
连接串口控制台
U-Boot和Linux Kernel都提供串口控制台登陆,这为我们提供了另外一个连接Innostick 6的途径。通常串口通信的参数为UART1,波特率115200,数据位8,停止位1,奇偶校验无,硬件流控无。
准备工作
- 一块Innostick 6主板
- 一台Windows主机
- 一根USB转串口电缆 USB to Serial TTL Converter
- Putty v0.66 from www.putty.org: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
操作步骤
1. 在Windows主机上安装Putty
2. 将USB转串口电缆的杜邦头和Innostick 6 UART1相连
具体连接方式如下:
杜邦头颜色 | Innostick 6扩展口 |
绿(RX) | P5-4(Tx) |
蓝(TX) | P5-6(Rx) |
黑(GND) | P5-8(GND) |
3. 安装J1跳针帽(Micro-USB供电)
4. J2跳针置空(“Normal Boot”模式)
5. 用Micro-USB电缆连接Windows主机和Innostick 6 P1口
此时Innostick 6上电启动,主板上的LED1开始闪烁。
6. 将USB转串口电缆插入Windows主机
此时Windows会自动识别出该串口设备,并安排端口号。
7. 启动Putty并设置通讯参数
注意这个例子中的COM7是Windows主机为USB转串口电缆安排的端口号
8. 点击Open连接到串口控制台
9. 按下主板上的复位按钮,此时Innostick 6重新启动,并且启动信息都显示在Putty窗口
eMMC分区
eMMC分区随着软件需求的改变而改变。下表是出厂时eMMC的分区信息
起始扇区 | 分区大小 | 格式 | 描述 |
2 | 20478 | RAW | 保留,和NXP发布的映像保持一致 |
20480 | 1024000(500MBytes) | FAT | U-Boot映像,产品资料,内核映像,DTB等 |
1228800 | eMMC所有剩余空间 | EXT4 | Linux Rootfs |
当引导模式为“Normal Boot”时,Innnostick 6内部Boot ROM会初始化板上内存,查找eMMC上FAT分区根目录下u-boot.imx文件,如果该文件存在,就将它复制到板上内存中,并将控制权交给U-Boot;如果u-boot.imx文件不存在,或者eMMC上没有FAT分区,内部Boot ROM会挂起,LED1开始急促闪烁,提醒用户检查FAT区的根目录是否存在异常。
Innostick 6默认采用NXP官方发布的U-Boot映像,而NXP官方U-Boot也会到FAT分区根目录下查找Linux Kernel映像和DTB文件,所以出厂时,FAT分区根目录下还有对应的映像文件。Innostick 6启动时引导次序大致为:内部Boot ROM --> FAT分区的u-boot.imx --> FAT分区的kernel + DTB。
更新Innostick 6的软件是非常简单和直接的,就是替换FAT分区根目录下的|U-Boot映像,内核映像和DTB。另外还有EXT4分区的Linux Rootfs,下面我们有专门的小节讲述如何更新Linux Rootfs。“U盘模式”更新是Innostick 6的独家首创,到目前为止,包括树莓派在内的其他linux开发板都无法做到这一点。
更新Linux Rootfs
在Innostick 6上更新Linux Rootfs是一项非常有意思的工作,它有别于树莓派等开发板采用的“磁盘克隆”方式。Innostick 6采用基于文件系统的“快闪”备份还原机制,杜绝了树莓派普遍存在的“空扇区擦写”和“磁盘缩小”等问题,缩短了烧录时间,延长了Flash存储器的使用寿命。
这项工作既可以在Windows主机,也可以在Linux主机上完成。
Windows主机
准备工作
- 一块Innostick 6主板
- 一台Windows主机
- PartitionGuru v4.9.5 from www.eassos.com: http://engdownload.eassos.cn/DGEngSetup496564.exe
- 一个PartitionGuru格式的Rootfs备份文件
操作步骤
1. 在Windows主机上安装PartitionGuru v4.9.5
2. 安装J1跳针帽(Micro-USB供电)
3. 安装J2跳针帽(J2-1和J2-2)(U盘模式)
4. 用Micro-USB电缆连接Windows主机和Innostick 6 P1口
此时Innostick 6上电启动,LED1开始闪烁。
5. 等待Windows识别出U盘设备
6. 启动PartitionGuru
7. 在Linux EXT4分区上,在这个例子中是G盘,右击
8. 点击‘Restore Partition From Image file’
9. 选择snapshot文件
10. 点击Start
11. 点击OK
12. 通常烧写一个2.5GB的文件到Innostick 6需要六分钟
13. 点击Complete
备份Linux Rootfs文件
同样的,PartionGuru也可以用来从Innostick6备份Linux Rootfs文件
Linux主机
在Linux主机上更新Innostick6 Rootfs更加简单。
准备工作
- 一块Innostick 6主板
- 一台Linux主机
- 一个Rootfs tarball
操作步骤
1. 安装J1跳针帽(Micro-USB供电)
2. 安装J2跳针帽(J2-1和J2-2)(U盘模式)
3. 用Micro-USB电缆连接Linux主机和Innostick 6 P1口
此时Innostick 6上电启动,LED1开始闪烁。
4. 等待U盘设备被Linux主机识别
esky-sh@ubuntu:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 1 14.6G 0 disk
├─sdb2 8:18 1 14G 0 part
└─sdb1 8:17 1 500M 0 part
sr0 11:0 1 1024M 0 rom
fd0 2:0 1 4K 0 disk
sda 8:0 0 50G 0 disk
├─sda2 8:2 0 1K 0 part
├─sda5 8:5 0 1021M 0 part [SWAP]
└─sda1 8:1 0 49G 0 part /
5. 在Linux EXT4 Partition上安装文件系统,这个例子中是“/dev/sdb2”设备
esky-sh@ubuntu:~$ sudo mount -t ext4 /dev/sdb2 /mnt/udisk
6. 把Rootfs tarball中的文件解压到Innostick 6
esky-sh@ubuntu:~$ sudo tar -jxvf /mnt/hgfs/sharefd/fsl-image-validation-imx-xwayland-imx6ul7d.tar.bz2 -C /mnt/udisk
sync
sudo umount /mnt/udisk/
软件
编译U-Boot和Linux kernel
这项工作既可以在x86主机(cross compiling),也可以在ARM主机(native compiling)上完成。
准备工作
- 一台运行Debian, Fedora或者Ubuntu的Linux主机
- NXP U-Boot 源代码: https://source.codeaurora.org/external/imx/uboot-imx
- NXP i.MX6 Kernel源代码: https://source.codeaurora.org/external/imx/linux-imx
- Innostick6 Kernel源代码: https://github.com/NXElec/linux-innostick6
安装build-essential
sudo apt-get install build-essential libncurses5-dev lzop
安装交叉编译器
如果您是在一台ARM架构的主机上做native compiling,那么这一节可以直接跳过。
- 安装32位编译器:
wget -c https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xz
export CROSS_COMPILE=`pwd`/gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
export ARCH=arm
- 安装64位编译器:
wget -c https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
export CROSS_COMPILE=`pwd`/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-
export ARCH=arm
编译U-Boot
下载源代码:
git clone https://source.codeaurora.org/external/imx/uboot-imx -b imx_v2017.03_4.9.88_2.0.0_ga
开始编译:
cd uboot-imx
make clean
make mx6ull_14x14_evk_defconfig
make
编译Kernel
下载源代码:
git clone https://source.codeaurora.org/external/imx/linux-imx -b imx_4.9.88_2.0.0_ga
开始编译:
cd linux-imx
make imx_v7_defconfig
make
或者:
git clone https://github.com/NXElec/linux-innostick6 -b i6_4.9.88_v1.0
开始编译:
cd linux-imx
make imx_v7_i6_defconfig
make