Вчера потратил пару часов на изучение листинга и map файла. Выяснил вот что: все заработало, если выставить галку в настройках компилятора "Place string literals and constant in initialized RAM". При этом константа, на которую я умножаю (1000 в моем случае) хранится в сегменте RAM NEAR_I, при старте инициализируется из FLASH NEAR_ID. Если эту галку убрать - константа хранится в RAM в сегменте NEAR_C. Хотя в симуляторе она есть в RAM и там и там. Да и вообще, если убрать последующее деление - умножение работает. В общем до конца так и не понял. Для примера кладу выдержки из листинга и map файла для обеих случаев.
Чегой-то файлы не добавились?! Как это сделать то?
|