Я тут волей случая вынужден 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 специальной командой,
там аддресс не смещен.
Может кто уже плавал тут, чтоб на грабли не наступать? Нутром чувствую что должно быть нормально.
Пойду попробую..