Open cisen opened 4 years ago
https://github.com/cisen/sourcecode-tockloader-00
tbf的安装内存是如何确定的?
tockloader\tab.py
每次安装app都需要重装一次系统?
# boards/nordic/nrf52dk/chip_layout.ld /* Memory Space Definitions, 512K flash, 64K ram */ MEMORY { rom (rx) : ORIGIN = 0x00000000, LENGTH = 192K prog (rx) : ORIGIN = 0x00030000, LENGTH = 320K ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K }
MPU_MIN_ALIGN = 8K;
- app的烧录地址是tockloader解析tbf文件计算得到的 **openocd flash的address是如何计算的?** - 在`tockloader\board_interface.py`的`get_apps_start_address`函数,获取tbf的appaddr字段,默认地址是0x30000 - 各个板子可以根据自己的情况定内存位置,自定义是在`tockloader\board_interface.py`的`'apps_start_address': 0x20430000,`配置 **所有app flash进去的地址都是30000?** - 是的,[tockloader](https://github.com/tock/tockloader/blob/5f0ea486c717106c430d66f9c75b0c4489f0bb3c/tockloader/main.py#L542),使用虚拟内存,每个进程一个页目录 - tock说明
╔═══════════╤══════════════════════════════════════════╗ ║ Address │ Region Name Used | Allocated (bytes) ║ ╚0x20006000═╪══════════════════════════════════════════╝ │ ▼ Grant 948 | 948 0x20005C4C ┼─────────────────────────────────────────── │ Unused 0x200049F0 ┼─────────────────────────────────────────── │ ▲ Heap 0 | 4700 S 0x200049F0 ┼─────────────────────────────────────────── R │ Data 496 | 496 A 0x20004800 ┼─────────────────────────────────────────── M │ ▼ Stack 72 | 2048 0x200047B8 ┼─────────────────────────────────────────── │ Unused 0x20004000 ┴─────────────────────────────────────────── ..... 0x00030400 ┬─────────────────────────────────────────── F │ App Flash 976 L 0x00030030 ┼─────────────────────────────────────────── A │ Protected 48 S 0x00030000 ┴─────────────────────────────────────────── H
- 在tock里面的各个layout.id文件都声明: ```id /* Memory Spaces Definitions, 448K flash, 64K ram */ /* Bootloader is at address 0x00000000 */ MEMORY { rom (rx) : ORIGIN = 0x00010000, LENGTH = 0x00020000 prog (rx) : ORIGIN = 0x00030000, LENGTH = 0x00040000 ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00020000 } MPU_MIN_ALIGN = 8K;
多个app是如何flash的?
_reshuffle_apps
https://github.com/cisen/sourcecode-tockloader-00
问答
tbf的安装内存是如何确定的?
tockloader\tab.py
的extract_app函数是解析tbf文件的入口每次安装app都需要重装一次系统?
MPU_MIN_ALIGN = 8K;
╔═══════════╤══════════════════════════════════════════╗ ║ Address │ Region Name Used | Allocated (bytes) ║ ╚0x20006000═╪══════════════════════════════════════════╝ │ ▼ Grant 948 | 948 0x20005C4C ┼─────────────────────────────────────────── │ Unused 0x200049F0 ┼─────────────────────────────────────────── │ ▲ Heap 0 | 4700 S 0x200049F0 ┼─────────────────────────────────────────── R │ Data 496 | 496 A 0x20004800 ┼─────────────────────────────────────────── M │ ▼ Stack 72 | 2048 0x200047B8 ┼─────────────────────────────────────────── │ Unused 0x20004000 ┴─────────────────────────────────────────── ..... 0x00030400 ┬─────────────────────────────────────────── F │ App Flash 976 L 0x00030030 ┼─────────────────────────────────────────── A │ Protected 48 S 0x00030000 ┴─────────────────────────────────────────── H
Flash
RAM
多个app是如何flash的?
_reshuffle_apps
函数,如果已经安装到板子上的,它还会从板子上重新读取bin数据,然后重新烧录