Я тут волей случая вынужден 8051 осваивать, точнее CC2530. Программатор "собрал", пишет и читает, стирает. Но есть некоторые непонятки. Да, я думаю другие 8051 похожи в этом смысле - я на SiLabs глянул краем уха, вроде такое же..
В опчем ситуация: 256 килобайт, 8 банков по 32 килобайта. Чтобы их записать, сначала выбираем банк, и потом пишем в верхние 32 килобайта 0х8000..0хFFFF аддрессного пространства. Программу содрал у TI, они там один CC2530 пользуют для программирования другого.
Написал программу ногодрыг по таймеру, проверить все ли правильно. Скомпилировал с sdcc. Получил hex file. Смотрю его, все с нулевых аддрессов. Ок. Записал: замапил банк 0, записал туда, читаю с оффсетом 0х8000, ух ты, тоже, что я туда и записал. Ну, в мануале написано, что банк 0 мапится в нижние 32к, что логично. Дай, думаю, оттуда прочитаю без оффсета. И вот данные какието там есть, но не те что надо. Примерно 8 килобайт, да. Похоже на RAM. Не стирается chip erase. Могу прочитать 0х6000 аддресса, где спец регистры. Совпадает с описанием. Получается, CODE area я не могу читать с нулевого аддресса? Это "XRAM"? Пользуется DPTR и CPU инструкция чтения "по аддрессу из DPTR" - "XRAM или CODE".. Непонятно написано. Ситуация усугубляется тем, что читается инструкцией CPU, а пишется дурацким способом через DMA специальной командой, там аддресс не смещен.
Может кто уже плавал тут, чтоб на грабли не наступать? Нутром чувствую что должно быть нормально. Пойду попробую..
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|