同步操作将从 yhuan416/hdf_sbull 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
HDF Simple Block Utility for Loading Localities
Date: 2021-9-4
Author: yhuan416
2021-9-4
初次上传,添加使用说明
ps:以下代码基于ohos主线进行操作
{
.phys = DDR_RAMFS_ADDR,
.virt = DDR_RAMFS_VBASE,
.size = DDR_RAMFS_SIZE,
.flags = MMU_INITIAL_MAP_DEVICE,
.name = "Sbull",
},
需要自行计算该区域的虚拟内存起始地址
此处的虚拟内存首地址为 0xc9000000
ps: 如果是旧版的mmu映射代码,请自行添加映射
驱动保存路径
device/${company}/drivers/sbull
$ cd device/st/drivers
$ git clone git@gitee.com:yhuan416/hdf_sbull.git sbull
修改同目录下的lite.mk文件,添加驱动
device/${company}/drivers/lite.mk
# sbull
LIB_SUBDIRS += $(STM32MP157_BASE_DIR)/sbull
LITEOS_BASELIB += -lhdf_sbull
ps: 此处以makefile编译框架做示范,后续添加gn框架的编译方法
路径:
device/st/stm32mp1/liteos_a/hdf_config/sbull/sbull_config.hcs
root {
module = "sbull";
platform {
template sbull_controller {
match_attr = "sbull_0";
vbase = 0x0;
size = 0x1000000;
}
controller_0xD0000000 :: sbull_controller {
vbase = 0xc9000000;
size = 0x1000000;
match_attr = "sbull_0";
}
}
}
路径:
device/st/stm32mp1/liteos_a/hdf_config/device_info/device_info.hcs
添加以下节点
storage :: host {
hostName = "storage_host";
sbull_flash :: device {
sbull_flash0 :: deviceNode {
policy = 0;
priority = 50;
permission = 0660;
moduleName = "sbull";
serviceName = "HDF_PLATFORM_SBULL_0";
deviceMatchAttr = "sbull_0";
}
}
}
路径:
device/st/stm32mp1/liteos_a/board/os_adapt/os_adapt.c
int mount_rootfs(void)
{
int ret = 0;
// 添加分区
// 0x800000:根文件系统分区的大小
ret = add_mtd_partition("spinor", 0, 0x800000, 0);
if (ret) {
dprintf("add_mtd_partition fail.");
return ret;
}
// 挂载
dprintf("mount /dev/spinorblk0 / ...\n");
if (mount("/dev/spinorblk0", "/", "jffs2", 0, NULL))
{
PRINT_ERR("mount failed.\n");
}
return 0;
}
void SystemInit(void)
{
...
// 需要先初始化hdf驱动框架
#ifdef LOSCFG_DRIVERS_HDF
dprintf("DeviceManagerStart start ...\n");
if (DeviceManagerStart()) {
PRINT_ERR("No drivers need load by hdf manager!");
}
dprintf("DeviceManagerStart end ...\n");
#endif
// 挂载根文件系统
#ifdef LOSCFG_PLATFORM_ROOTFS
dprintf("OsMountRootfs start ...\n");
mount_rootfs();
dprintf("OsMountRootfs end ...\n");
#endif
...
}
$ make CONFIG=.config_stm32mp157 TEE=1 clean
$ make CONFIG=.config_stm32mp157 TEE=1 liteos
$ make CONFIG=.config_stm32mp157 TEE=1 FSTYPE=jffs2 rootfs
ps: 制作根文件系统时需要指定其大小 参考文档
$ mw.b 0xc0100000 0xff 0xDC000
$ tftpboot 0xc0100000 liteos_with_uboot_header.bin
$ mw.b 0xD0000000 0xff 0x1000000
$ tftpboot 0xD0000000 rootfs_jffs2.img
$ bootm 0xc0100000
有使用问题欢迎提issue~
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。