diff --git a/source/chapter3/1multi-loader.rst b/source/chapter3/1multi-loader.rst index 450e5318cbdc1ddfd10b51e58572845ee6e43b45..c589aefe3dc127b4c091bfb2556dd477bb4aa1e9 100644 --- a/source/chapter3/1multi-loader.rst +++ b/source/chapter3/1multi-loader.rst @@ -38,7 +38,7 @@ import os - base_address = 0x80100000 + base_address = 0x80400000 step = 0x20000 linker = 'src/linker.ld' @@ -64,7 +64,7 @@ 它的思路很简单,在遍历 ``app`` 的大循环里面只做了这样几件事情: -- 第 16~22 行,找到 ``src/linker.ld`` 中的 ``BASE_ADDRESS = 0x80100000;`` 这一行,并将后面的地址 +- 第 16~22 行,找到 ``src/linker.ld`` 中的 ``BASE_ADDRESS = 0x80400000;`` 这一行,并将后面的地址 替换为和当前应用对应的一个地址; - 第 23 行,使用 ``cargo build`` 构建当前的应用,注意我们可以使用 ``--bin`` 参数来只构建某一个应用; - 第 25~26 行,将 ``src/linker.ld`` 还原。 @@ -124,7 +124,7 @@ } 我们可以在 ``config`` 子模块中找到这两个常数。从这一章开始, ``config`` 子模块用来存放内核中所有的常数。看到 -``APP_BASE_ADDRESS`` 被设置为 ``0x80100000`` ,而 ``APP_SIZE_LIMIT`` 和上一章一样被设置为 +``APP_BASE_ADDRESS`` 被设置为 ``0x80400000`` ,而 ``APP_SIZE_LIMIT`` 和上一章一样被设置为 ``0x20000`` ,也就是每个应用二进制镜像的大小限制。因此,应用的内存布局就很明朗了——就是从 ``APP_BASE_ADDRESS`` 开始依次为每个应用预留一段空间。