“100ask roc-rk3399-pc”的版本间的差异
第368行: | 第368行: | ||
===编译ubuntu18.04=== | ===编译ubuntu18.04=== | ||
− | + | 把从网盘下载得到的镜像放到sdk的根目录处: | |
− | |||
− | |||
− | |||
*1. 解压ubuntu18.04系统镜像 | *1. 解压ubuntu18.04系统镜像 |
2019年8月8日 (四) 15:46的版本
- 开发板购买地址:
- 资料光盘下载地址:https://pan.baidu.com/s/1qGeSZKxCH7pFDZNgsIvczQ
roc-rk3399-pc简介
SOC特征
|
开发板特征
roc-rk3399-pc 开发板参数列表 | |
---|---|
主控芯片 |
|
处理器 |
|
图形处理器 |
|
视频处理器 |
|
电源管理 |
|
内存 |
|
存储器 |
|
以太网 |
|
WiFi/蓝牙 |
|
显示 |
|
音频 |
|
摄像头 |
|
USB |
|
调试 |
|
按键 |
|
红外 |
|
RTC |
|
电源 |
|
双Type-C |
|
软件支持
模块支持
- adxl345
- dac
- dh11
- ds18b20
- eeprom
- gps
- irda
- oled
- 步进电机驱动模块
- 超声波
- 人体红外感应
快速使用
编译100ask linux sdk系统
简介:以下资源仅限于在百问网官方购买及百问网授权店铺购买的开发板上使用,我们在官方的基础上做了大量的定制化修改,精简了系统,简化下载以及编译流程,更大的提升开发效率,系统不同于firefly官方。如需为roc-rk3399-pc编译ubuntu 以及Android系统请参考编译firefly系统章节。
获取源码
git邮箱账号和用户名配置
git config --global user.email "you@example.com" git config --global user.name "Your Name"
初次使用,需要配置用户名和密码才可以进行代码同步,用户名和密码根据自己情况设定,也可以随意设定
- repo工具配置
考虑到代码仓库过多,特使用repo工具管理代码
book@100ask:~$ git clone https://git.dev.tencent.com/codebug8/repo.git book@100ask:~$ mkdir -p 100ask_roc-rk3399-pc && cd 100ask_roc-rk3399-pc book@100ask:~/100ask_roc-rk3399-pc $ ../repo/repo init -u https://dev.tencent.com/u/weidongshan/p/manifests/git -b linux-sdk -m rk3399/roc-rk3399-pc_linux_release.xml --no-repo-verify book@100ask:~/100ask_roc-rk3399-pc $ ../repo/repo sync -j4
- 上面使用的repo管理文件xml为国内coding仓库 https://dev.tencent.com/u/weidongshan/p/manifests/git/tree/linux-sdk
- 如果使用Github仓库管理文件xml请查看 https://github.com/100askTeam/manifests/blob/linux-sdk/README.md
设置工具链
交叉编译工具链主要是用于在ubuntu主机上编译并声称可以在其它平台上运行的系统。设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。
- 永久生效
如需永久修改,请修改用户配置文件, Ubuntu系统下,修改如下:
vim ~/.bashrc
在行尾添加或修改:
export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin
- 临时生效
执行完“export”命令后,该设置只对当前终端有效
book@100ask:~$ export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin book@100ask:~$ export ARCH=arm64 book@100ask:~$ export CROSS_COMPILE=aarch64-linux-gnu-
- 手动指定
Make编译时指定ARCH架构 CROSS_COMPILE交叉编译工具链
book@100ask:~$ export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin book@100ask:~$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- [命令]
编译u-boot
不同的开发板对应不同的配置文件,配置文件位于 u-boot的configs/ 目录,下面以Roc-rk3399-pc开发板为例,说明u-boot的编译过程:
book@100ask:~$ cd ~/100ask_roc-rk3399-pc/uboot2019.01 book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ make distclean book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ make 100ask_roc-rk3399-pc_defconfig book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ make book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ ./make.sh trust book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ ./make.sh uboot book@100ask: ~/100ask_roc-rk3399-pc/uboot2019.01$ ./make.sh loader
- nfs启动系统
=> setenv serverip 192.168.1.132 => setenv ipaddr 192.168.1.112 => tftpboot 0x01f00000 rk3399-roc-pc.dtb; tftpboot 0x02080000 Image; setenv bootargs root=/dev/nfs nfsroot=192.168.1.132:/home/book/rootfs,vers=3 rw ip=192.168.1.120; booti 0x02080000 - 0x01f00000
编译linux kernel
book@100ask:~/100ask_roc-rk3399-pc$ cd linux-4.4 book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ make mrproper book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ make 100ask_roc-rk3399-pc_defconfig book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ make Image book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ make dtbs
- 编译内核模块
book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules
- 安装内核模块到nfs根文件系统
book@100ask:~/100ask_roc-rk3399-pc/linux-4.4$ sudo make ARCH=arm64 INSTALL_MOD_PATH=/media/rootfs modules_install
编译根文件系统
配置文件 | 含义 |
---|---|
100ask_roc-rk3399-pc_defconfig | 默认文件系统版本 |
book@100ask:~/100ask_roc-rk3399-pc$ cd buildroot2018.02 book@100ask:~/100ask_roc-rk3399-pc/buildroot2018.02$ make clean book@100ask:~/100ask_roc-rk3399-pc/buildroot2018.02$ make 100ask_roc-rk3399-pc_defconfig book@100ask:~/100ask_roc-rk3399-pc/buildroot2018.02$ make menuconfig book@100ask:~/100ask_roc-rk3399-pc/buildroot2018.02$ make –jN /* N表示CPU的线程数,比如可以写4、8等以加快编译速度 */
编译后生成文件介绍
buildroot2018.02
├── output
├── images
├── idbloader.img <--u-boot镜像
├── nfs_rootfs <--打包并压缩的根文件系统,适用于NFSROOT启动
│ └── rootfs.tar.gz
├── rk3288-firefly.dtb <--设备树文件
├── rootfs.ext2
├── rootfs.ext4 -> rootfs.ext2 <--ext2格式根文件系统
├── rootfs.tar <--打包后的根文件系统
├── sdcard.img <--完整的SD卡系统镜像
├── trust.img <--u-boot镜像
├── u-boot.bin
├── u-boot-dtb.img
├── uboot.img <--u-boot镜像
└── zImage <--内核镜像
sd卡启动
1.安装资料光盘下01_tools/SD Card Formatter 5.0.1 Setup.exe软件,安装完成后打开!
2.使用SdCardFormatter格式化SD卡,格式化步骤如下如所示!
(1)选择要格式化的SD卡,选中Quick format,点击Format | (2)在弹出的对话框中点击是(Y) | (3)等待格式化完成,在弹出的对话框中点击确定 |
3.安装资料光盘下01_tools/ win32diskimager-1.0.0-install.exe软件,安装完成后打开!
4.使用wind32diskimage烧写编译后的系统镜像,烧写步骤如下所示!
(1)选中需要烧写的SD卡设备,点击文件图标选择系统镜像文件,最后点击写入按钮开始烧写 | (2)此时弹出烧写对话框,点击Yes按钮,继续烧写, 等待任务进度执行到100%) | 烧写成功后,弹出写入成功,此时点击OK |
编译firefly linux-sdk系统
编译前配置
配置sdk
- 下载源码
使用浏览器打开 https://pan.baidu.com/s/1yjc9aMB-ds7Xixifgov0Gg 保存资料光盘中的 Firefly-sdk_v1 到自己的网盘中,让后进行下载。
- 解压源码
使用FileZilla或其它软件上传下载后的linux-sdk
源码包,让后通过7z工具进行解压。
7z x linux-rk3399-sdk.7z.001
- 同步源码
repo sync -c
如果提示repo
命令不存在,请使用手动下载安装,或者使用我们已经上传到仓库中的。
配置 roc-rk3399-pc
- 配置文件 roc-rk3399-pc.mk:
./build.sh roc-rk3399-pc.mk
文件路径在device/rockchip/rk3399/roc-rk3399-pc.mk
如果配置文件生效会连接到device/rockchip/.BoardConfig.mk,检查该文件可以验证是否配置成功
注意:roc-rk3399-pc.mk为编译生成buildroot固件的配置文件.同时用户也可以通过参考该配置生成新的配置文件来适配自己所需要的固件。
- 重要配置介绍:(如果需要diy固件,可能需要修改下列配置信息)
# Uboot defconfig export RK_UBOOT_DEFCONFIG=roc-rk3399-pc 编译uboot配置文件
# Kernel defconfig export RK_KERNEL_DEFCONFIG=firefly_linux_defconfig 编译kernel配置文件
# Kernel dts export RK_KERNEL_DTS=rk3399-roc-pc 编译kernel用到的dts
# parameter for GPT table export RK_PARAMETER=parameter-ubuntu.txt 分区信息(十分重要)
# packagefile for make update image export RK_PACKAGE_FILE=rk3399-ubuntu-package-file 打包配置文件
# rootfs image path export RK_ROOTFS_IMG=xxxx/xxxx.img 根文件系统镜像路径
注意,十分重要!!
默认配置编译buildroot固件,如果想编译其他固件(如ubuntu固件)请执行一下操作:
全自动编译
在配置和搭建环境的工作都做好的前提下:
./build.sh
全自动编译的固件默认会编译一遍buildroot根文件系统。生成固件目录rockdev/,同时会在IMAGE中备份。
部分编译
编译kernel
./build.sh kernel
编译u-boot
./build.sh uboot
生成recovery
recovery分区可省略,若有需要: 编译recovery:
./build.sh recovery
编译rootfs
编译buildroot
./build.sh rootfs
编译ubuntu18.04
把从网盘下载得到的镜像放到sdk的根目录处:
- 1. 解压ubuntu18.04系统镜像
tar -xvf rk3399_ubuntu18.04_LXDE.img.tgz
- 2. 解压后的文件放到sdk根目录下
mkdir ubunturootfs mv rk3399_ubuntu18.04_LXDE.img ubunturootfs/
- 3. 修改roc-rk3399-pc.mk文件
vim device/rockchip/rk3399/roc-rk3399-pc.mk
- 4. 把RK_ROOTFS_IMG属性改成ubuntu文件系统镜像得路径(也就是rk3399_ubuntu18.04_LXDE.img)
RK_ROOTFS_IMG=ubunturootfs/rk3399_ubuntu18.04_LXDE.img
注意:ubuntu根文件系统镜像存放路径不能错
- 5. 运行
./mkfirmware.sh
会自动更新rockdev/rootfs.img
的链接
固件打包
同步更新各部分镜像
每次打包固件前先确保rockdev/目录下文件链接是否正确: ls -l
├── boot.img -> ~/project/linux_sdk/kernel/boot.img ├── idbloader.img -> ~/project/linux_sdk/u-boot/idbloader.img ├── linaro-rootfs.img ├── MiniLoaderAll.bin -> ~/project/linux_sdk/u-boot/rk3399_loader_v1.14.115.bin ├── misc.img -> ~/project/linux_sdk/device/rockchip/rockimg/wipe_all-misc.img ├── oem.img ├── parameter.txt -> ~/project/linux_sdk/device/rockchip/rk3399/parameter-ubuntu.txt ├── recovery.img -> ~/project/linux_sdk/buildroot/output/rockchip_rk3399_recovery/images/recovery.img ├── rootfs.img -> ~/project/linux_sdk/ubunturootfs/rk3399_ubuntu18.04_LXDE.img ├── trust.img -> ~/project/linux_sdk/u-boot/trust.img ├── uboot.img -> ~/project/linux_sdk/u-boot/uboot.img └── userdata.img
可以运行./mkfirmware.sh更新链接
./mkfirmware.sh
提示:若不是编译全部的分区镜像,在运行./mkfirmware时,会遇到如下类似情况: error: /home/ljh/proj/linux-sdk/buildroot/output/rockchip_rk3399_recovery/images/recovery.img not found! 表示recovery分区没有编译出镜像,其他的情况类似,如oem.img、userdata.img 上文提到,这些属于可省略分区镜像,可以不用理会。
打包统一固件
注意:打包前请确认tools/linux/Linux_Pack_Firmware/rockdev/package-file是否正确。打包会根据此文件进行分区打包。此文件链接会在./build.sh roc-rk3399-pc.mk 命令时更新,如果配置不对请返回[配置]一节重新配置一次。
整合统一固件
./build.sh updateimg
分区介绍
parameter
parameter.txt包含了固件的分区信息十分重要,你可以在device/rockchip/rk3399
目录下找到一些parameter.txt文件,下面以parameter-debian.txt
为例子做介绍:
FIRMWARE_VER: 8.1 MACHINE_MODEL: RK3399 MACHINE_ID: 007 MANUFACTURER: RK3399 MAGIC: 0x5041524B ATAG: 0x00200800 MACHINE: 3399 CHECK_MASK: 0x80 PWR_HLD: 0,0,A,0,1 TYPE: GPT CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00002000@0x00006000(trust),0x00002000@0x00008000(misc),0x00010000@0x0000a000(boot),0x00010000@0x0001a000(recovery),0x00010000@0x0002a000(backup),0x00020000@0x0003a000(oem),0x00700000@0x0005a000(rootfs),-@0x0075a000(userdata:grow) uuid:rootfs=614e0000-0000-4b53-8000-1d28000054a9
CMDLINE属性是我们关注的地方。以uboot为例 0x00002000@0x00004000(uboot)
中0x00004000
为uboot分区的起始位置0x00002000为分区的大小。后面的分区规则相同。用户可以根据自己需要增减或者修改分区信息,但是请最少保留uboot,trust,boot,rootfs分区,这是机器能正常启动的前提条件。parameter-ubuntu.txt中使用的就是这样的最简分区方案。
分区介绍:
uboot 分区: 烧写 uboot 编译出来的 uboot.img. trust 分区: 烧写 uboot 编译出来的 trust.img misc 分区: 烧写 misc.img。开机检测进入recovery模式.(可省略) boot 分区: 烧写 kernel 编译出来的 boot.img.包含kernel和设备树信息 recovery 分区: 烧写 recovery.img.(可省略) backup 分区: 预留,暂时没有用。后续跟 android 一样作为 recovery 的 backup 使用.(可省略) oem 分区: 给厂家使用,存放厂家的 app 或数据。只读。代替原来音箱的 data 分区。挂载在/oem 目录.(可省略) rootfs 分区: 存放 buildroot 或者 debian 编出来的 rootfs.img,只读. userdata 分 区 : 存 放 app 临 时 生 成 的 文 件 或 者 是 给 最 终 用 户 使 用 。 可 读 写 , 挂 载 在 /userdata 目录下.(可省略)
package-file
此文件应当与parameter保持一致,用于固件打包。可以在tools/linux/Linux_Pack_Firmware/rockdev
下找到相关文件。以rk3399-ubuntu-package-file为例介绍:
# NAME Relative path # #HWDEF HWDEF package-file package-file bootloader Image/MiniLoaderAll.bin parameter Image/parameter.txt trust Image/trust.img uboot Image/uboot.img boot Image/boot.img rootfs:grow Image/rootfs.img backup RESERVED
以上是SDK编译后生成的镜像文件。根据parameter.txt只打包自己用到的img文件。
编译android固件
编译android 7.1固件
- 安装openjdk-8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo java -version
- 安装基本依赖包
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \
git flex bison gperf build-essential libncurses5-dev:i386 \
dpkg-dev libsdl1.2-dev libesd0-dev \
git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib \
libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev \
libgl1-mesa-dev libxml2-utils xsltproc unzip m4 \
lib32z1-dev ccache make tofrodos p7zip-full \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 -y
ROC-RK3399-PC产品编译方法
HDMI显示编译
./FFTools/make.sh -d rk3399-roc-pc -j8 -l ROC_RK3399_PC-userdebug ./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
手动编译ROC-RK3399-PC
- 编译前执行如下命令配置环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
- 编译kernel:
cd ~/proj/firefly-rk3399/kernel/ make ARCH=arm64 firefly_defconfig make -j8 ARCH=arm64 rk3399-roc-pc.img
- 编译uboot:
cd ~/proj/firefly-rk3399/u-boot/ make rk3399_box_defconfig make ARCHV=aarch64 -j8
- 编译android:
cd ~/proj/firefly-rk3399/ source build/envsetup.sh lunch ROC_RK3399_PC-userdebug make -j8 ./mkimage.sh
- 打包成统一固件 update.img
编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:
./FFTools/mkupdate/mkupdate.sh update
打包完成后将在rockdev/Image-ROC_RK3399_PC/下生成统一固件:update.img
在 Windows 下打包统一固件 update.img 也很简单,将编译生成的文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。
- 生成tf卡启动的固件
编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:
./FFTools/mkupdate/mkupdate.sh sdboot
打包完成后将在rockdev/Image-ROC_RK3399_PC/下生成sdboot固件:SDBOOT-ROC_RK3399_PC_Android7.1.2_MP_181229.img
用瑞芯微 SD_Firmware_Tool 工具创建sd卡启动,首先选择设备,在功能模式选择sd启动,然后选择上传生成的固件,最后点击创建,界面如下图:
_images/android_compile_android1.png
烧写分区映像
编译的时候执行 ./mkimage.sh 会重新打包 boot.img 和 system.img, 并将其它相关的映像文件拷贝到目录 rockdev/Image-ROC_RK3399_PC/ 中。以下列出一般固件用到的映像文件:
boot.img :Android 的初始文件映像,负责初始化并加载 system 分区。 kernel.img :内核映像。 misc.img :misc 分区映像,负责启动模式切换和急救模式的参数传递。 parameter.txt :emmc的分区信息 recovery.img :急救模式映像。 resource.img :资源映像,内含开机图片和内核的设备树信息。 system.img :Android 的 system 分区映像,ext4 文件系统格式。 trust.img :休眠唤醒相关的文件 rk3399_loader_v1.08.106.bin :Loader文件 uboot.img :uboot文件
请参照 如何升级固件 一文来烧写分区映像文件。
如果使用的是 Windows 系统,将上述映像文件拷贝到 AndroidTool (Windows 下的固件升级工具)的 rockdev\Image 目录中,之后参照升级文档烧写分区映像即可,这样的好处是使用默认配置即可,不用修改文件的路径。
update.img 方便固件的发布,供终端用户升级系统使用。一般开发时使用分区映像比较方便。
编译android 8.1固件
- 安装openjdk-8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo java -version
- 安装基本依赖包
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \
git flex bison gperf build-essential libncurses5-dev:i386 \
dpkg-dev libsdl1.2-dev libesd0-dev \
git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib \
libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev \
libgl1-mesa-dev libxml2-utils xsltproc unzip m4 \
lib32z1-dev ccache make tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 -y
编译安卓命令
- 编译之前请先执行如下命令配置好环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
- 编译内核(需要进入kernel目录下执行命令)
make ARCH=arm64 firefly_defconfig
make -j8 ARCH=arm64 rk3399-roc-pc.img
- 编译 U-Boot
make rk3399_defconfig
make ARCHV=aarch64 -j8
- 编译 Android(在安卓sdk目录下执行)
source build/envsetup.sh
lunch ROC_RK3399_PC-userdebug
make installclean
make -j8
./mkimage.sh
打包 RK 固件
- 在 Linux 下打包固件
编译完成后使用 Firefly 官方脚本即可打包所有的分区映像成可供SD卡启动的 roc-rk3399-pc固件:
./FFTools/mkupdate/mkupdate.sh -t sd
最终生成的文件是 rockdev/Image-ROC_RK3399_PC/sd_ROC_RK3399_PC_Android8.1.0_DEFAULT_190802.img
- 在 Windows 下使用wind32diskimg工具烧写镜像
烧写方法请参考 [SD卡启动]
分区映像
sd_ROC_RK3399_PC_Android8.1.0_DEFAULT_190802.img 是发布给最终用户的固件,方便升级开发板。而在实际开发中,更多的时候是修改并烧写单个分区映像文件,这样做大大节省开发时间。
下表总结了在各个编译阶段所生成的分区映像文件:
|------------------|---------------------|-----------|
| Stage | Product | Partition |
|------------------|---------------------|-----------|
| Compiling Kernel | kernel/kernel.img | kernel |
| | kernel/resource.img | resource |
|------------------|---------------------|-----------|
| Compiling U-Boot | u-boot/uboot.img | uboot |
|------------------|---------------------|-----------|
| ./mkimage.sh | boot.img | boot |
| | system.img | system |
|------------------|---------------------|-----------|
注意,执行 ./mkimage.sh 后, boot.img 和 system.img 将会被重新编译并打包到目录 out/target/product/ROC_RK3399_PC/ 下,所有生成的映像文件将会拷贝到目录 rockdev/Image-ROC_RK3399_PC/` 下。
如下是映像文件列表:
boot.img: Android 的 initramfs 映像,包含Android根目录的基础文件系统,它负责初始化和加载系统分区。 system.img: ext4 文件系统格式的 Android 文件系统分区映像。 kernel.img: 内核映像。 resource.img: Resource 映像, 包含启动图片和内核设备树。 misc.img: misc 分区映像, 负责启动模式的切换和急救模式参数的传递。 recovery.img: Recovery 模式映像。 rk3399_loader_v1.12.112.bin: Loader 文件。 uboot.img: U-Boot 映像文件。 trust.img: Arm trusted file (ATF) 映像文件。 parameter.txt: 分区布局和内核命令行。 vendor.img: TODO oem.img: TODO baseparameter.img: TODO