rt-thread-official/bsp/x1000/README.md

184 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 君正X1000处理器板级支持包
---
## 1. 简介
X1000 是 君正 Ingenic 公司的一款面向 智能音频、图像识别、智能家电、智能家居 等领域的高性能物联网芯片。包括如下硬件特性:
| 硬件 | 描述 |
| -- | -- |
|芯片型号| X1000/X1000E |
|CPU| MIPS32, XBurst |
|主频| 1GHz |
|片内LPDDR| 32MB |
***注:*** X1000E携带64MB片内LPDDR
![此处输入图片的描述][1]
这个板级支持包是一份君正X1000处理器的完整移植。
## 2. 编译说明
X1000处理器是一款MIPS32兼容处理器由于[RT-Thread/ENV][2]工具中并未默认携带MIPS的工具链可以按照自己使用PC情况到以下地方下载工具链
* [Windows环境版本GCC][3]
* [Linux环境版本GCC][4]
安装好工具链后假设使用的是Windows版本工具链安装在`D:\Tools\mips-2016.05`目录下。使用env工具打开console进入到命令行环境中需要手动设置工具链的环境变量`RTT_EXEC_PATH`
set RTT_EXEC_PATH=d:\Tools\mips-2016.05\bin
然后在console中进入到`rt-thread\bsp\x1000`目录中执行以下命令编译RT-Thread:
scons
来编译这个板级支持包。如果编译正确无误会产生rtthread.elf、rtthread.bin文件。其中rtthread.bin需要烧写到设备中进行运行。
也可以在ENV中使用
menuconfig
来配置RT-Thread。当前这份BSP支持多种板卡类型包括哈雷2凤凰板以及睿赛德提供的RealBoard X1000开发板等。
![board配置](figures/menuconfig_board.png)
## 3. 烧写及执行
在烧写前请使用两条micro-b的USB线连接到电脑上一个是USB转UART一个是USB接口用于烧写固件。烧写需要使用君正提供的[cloner工具软件注意是cloner-2.3.0版本][5]。请按照下面的方式设置cloner工具软件。
其中,
* uboot.bin烧写地址是0x0
* rtthread.bin烧写地址是0x40000
* rootfs烧写地址是0x400000
> uboot.bin请使用bsp/x1000中附带的uboot-for-realboard.bin文件。关于rootfs文件生成请见第5节
在连接好USB后如果是RT-Thread RealBoard/X1000开发板可以同时按住 `Reset + Boot` 按键,然后先释放`Reset`按键,然后再释放`Boot`按键。这个时候cloner软件会进入烧写模式烧写固件到板子上。
连接好串口可以使用putty以115200-N-8-1的配置方式连接到设备上。开发板复位后首先运行的是u-boot引导程序然后再由u-boot跳转到flash中的rtthread.bin固件中。
> 如果是自行编译的uboot程序可以把bootcmd设置为
bootcmd=sfcnor read 0x40000 0x340000 0x80800000\;go 0x80800000
### 3.1 运行结果
如果编译 & 烧写无误当复位设备后会在串口上看到RT-Thread的启动logo信息
![启动信息](figures/uboot.png)
## 4. 驱动支持情况及计划
| 驱动 | 支持情况 | 备注 |
| ------ | ---- | :------ |
| UART | 支持 | UART0/1 |
| Clock | 支持 | |
| pinmux | 支持 | |
| SPI | 支持 | |
| IIC | 支持 | 以IO模拟方式 |
| SFC Flash | 支持 | 支持四线模式挂载文件系统 |
| WDT | 支持 | |
| SLCD | 支持 | |
| MMC | 支持 | MMC0/1 |
| EMAC | 支持 | 测试未充分 |
| USB | 有限度支持device | USB device还未完全稳定 |
| Camera | 不支持 | N/A |
### 4.1 IO在板级支持包中的映射情况
| IO号 | 板级包中的定义 |
| -- | -- |
| 调试串口 | PD2/3 |
## 5. 生成flash中的文件系统镜像
在这份BSP中默认把flash偏移0x400000后的空间划分为文件系统使用即Flash中4MB以后的空间做为文件系统使用并且以FAT文件系统方式来使用RT-Thread本身并无一些文件系统上文件的依赖不过第6节中提及的Wi-Fi功能固件是放于文件系统根目录下
这部分文件系统空间可以在系统启动后使用mkfs命令来格式化然后装载也可以在PC上预先生成然后通过cloner工具烧写到flash上。如果是预先生成的方式可以使用env/tools/fatdisk工具进行生成。fatdisk工具类似于把一个目录下的所有文件及子目录都转换成一个FAT文件系统的映像至于如何转换相对应的参数是什么样的主要由fatdisk.xml配置文件来控制例如
```xml
<?xml version="1.0" encoding="UTF-8"?>
<fatdisk>
<disk_size>4096</disk_size>
<sector_size>4096</sector_size>
<root_dir>root</root_dir>
<output>sd.bin</output>
<strip>1</strip>
</fatdisk>
```
disk_size代表了这个文件系统映像的最大容量是多少单位是kBytessector_size代表着扇区大小对于X1000分支这个大小必须是4096。root_dir则表示转换的目录是针对fatdisk.exe可执行文件的相对目录output代表生成的文件系统映像文件的文件名称。strip代表文件系统后面的全0数据是否移除0代表不移除1代表移除
***注:***
在BSP中也可以更改这个flash偏移点它是由如下分区代码所决定
`文件bsp/x1000/drivers/sfc/drv_sfc_gd25qxx_mtd_partition.c`
```C
static struct rt_mtd_nor_partition _sf_gd25_parts[] =
{
{
/* sf01 u-boot 512K */
.name = "uboot",
.offset = 0x0,
.size = (0x80000),
.mask_flags = PART_FLAG_RDONLY | PART_TYPE_BLK, /* force read-only */
},
...
{
/* rootfs */
.name = "rootfs",
.offset = 0x400000,
.size = 0x800000,
.mask_flags = PART_FLAG_RDONLY | PART_TYPE_BLK, /* force read-only & Block device */
},
...
};
```
当前BSP中这个分区配置被配置成如下表所示
| 名称 | 起始地址 | 大小 | 属性 |
| -- | -- | -- | -- |
| uboot | 0x0 | 512KBytes | 只读 |
| kernel | 0x80000 | 3.5MBytes | 只读 |
| rootfs | 0x400000 | 8MBytes | 只读 |
| appfs | 0xE00000 | 2MBytes | 读写 |
## 6. 使用哈雷2核心板Wi-Fi功能
在RT-Thread package上已经包含了哈雷2核心板带的BCM43438的Wi-Fi驱动可以在menuconfig中打开以下选项
RT-Thread online packages --->
IoT - internet of things --->
Wi-Fi --->
Wiced WiFi --->
[*] Wiced WiFi driver for rt-thread
wiced wifi version (latest version)
然后在console命令下执行`pkgs --update`它会下载Wi-Fi驱动package并部署到这个板级支持包中。
当编译成功并烧写到板子上以及把BCM43438的固件43438A1.bin放置一份在文件系统根目录下。系统运行起来后然后使用以下命令行关联到Wlan网络中
wifi w0 join YOUR_SSID YOUR_PASSWD
其中,
* YOUR_SSID 请使用你的wlan AP名称代替
* YOUR_PASSWD 请使用你的wlan设备密码代替
## 6. 参考
* 芯片[数据手册][7]
[1]: http://www.ingenic.cn/~editor/eweditor/uploadfile/20160615102142861.png
[2]: https://www.rt-thread.org/page/download.html
[3]: https://sourcery.mentor.com/GNUToolchain/package14477/public/mips-sde-elf/mips-2016.05-7-mips-sde-elf-i686-mingw32.tar.bz2
[4]: https://sourcery.mentor.com/GNUToolchain/package14476/public/mips-sde-elf/mips-2016.05-7-mips-sde-elf-i686-pc-linux-gnu.tar.bz2
[5]: https://pan.baidu.com/s/1slVU4tJ
[6]: images/startup.jpg
[7]: ftp://ftp.ingenic.com/SOC/X1000/X1000_DS.pdf