Абырвалг 0 25 марта, 2011 Опубликовано 25 марта, 2011 · Жалоба Память у тексасовских процессоров разбита на блоки. Например у c2000 есть блоки L0 и L1, расположены друг за другом и вроде бы ничем не различаются. В *.cmd описаны следующим образом: RAML0 : origin = 0x008000, length = 0x001000 RAML1 : origin = 0x009000, length = 0x001000 Возникает вопрос, чем же они отличаются друг от друга и почему не объединены в один? У меня секция не лезет в один блок, напрашивается решение объединить два блока в один: RAML01 : origin = 0x008000, length = 0x002000 Но опасаюсь, что могут быть какие нибудь глюки при пересечении границы. На просторах инетрета наткнулся на пример размещения секции в двух блоках таким образом: .text : > RAML0|RAML1, PAGE = 0 Но у меня такое не проходит, линкер пытается разместить всю секцию только в RAML0. Можно, конечно, часть кода перенести в какую нибудь отдельную секцию my_section, но это как-то не кошерно. Подскажите, корректно ли объединять блоки в один большой? Как раскидать секцию по двум блокам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rokhan 0 28 марта, 2011 Опубликовано 28 марта, 2011 · Жалоба Всё нормально можешь смело писать что это один блок. Глюков не будет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 29 марта, 2011 Опубликовано 29 марта, 2011 · Жалоба У Analog Devices подобное разбиение сделано для одновременного доступа к этим блокам памяти. Например в одном блоке хранятся коеэффициенты для фильтра в другом блоке отсчеты. Когда эти данные находятся в разных блоках проц может за один такт достать эти данные из обоих блоков и умножить. Если бы коэффициенты и отсчеты были в одном блоке проц не смог бы достать оба значения за один такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться