aaarrr 63 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба Что я делаю неправильно? sections // 1 DCD 0x21F00800 ; _SDRAM_READ_ Section 00000000; Flash DCD 0x21F03FFF ; 00100000 DCD 0xC ; 2_1100 ; wb, buffered // c03fc000 DCD 0x21F04000 ; c0000000 ; SDRAM Page 0 - _SDRAM_WRITE_ Section DCD 0x21F04FFF ; c0400000 DCD 0xC ; 2_1100 ; wb, buffered Здесь выброшен маркер конца таблицы (DCD 0x01), что у Вас в TT оказалось - неизвестно. POP {LR} POP {R7} POP {R6} POP {R5} POP {R4} POP {R3} POP {R2} POP {R1} POP {R0} Лучше грузить на стек и выгружать регистры скопом, а не по одному. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DamienRice 0 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба Привет. На сколько я помню я делал отдельный сегмент кода в внутреней памяти, потом писал к функции приставку - разместить код туда. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба Привет. На сколько я помню я делал отдельный сегмент кода в внутреней памяти, потом писал к функции приставку - разместить код туда. Я уже тоже думаю сделать примерно также. Но вариант с кэшем надо проработать до логического завершенния. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Antokha 0 12 ноября, 2008 Опубликовано 12 ноября, 2008 · Жалоба Здесь выброшен маркер конца таблицы (DCD 0x01), что у Вас в TT оказалось - неизвестно. Другими словами, описания начала и конца сегментов, содержащих весь код программы и лежащих до маркера, недостаточно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 13 ноября, 2008 Опубликовано 13 ноября, 2008 · Жалоба Должно быть: sections // 1 DCD 0x21F00000 DCD 0x21F10000 DCD 0xC ; 2_1100 ; wb, buffered DCD 0x01 Размер секции должен быть кратен 1Мбайт. Имеет смысл кэшировать всю SDRAM, внутреннюю SRAM и флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 13 ноября, 2008 Опубликовано 13 ноября, 2008 · Жалоба Должно быть: Размер секции должен быть кратен 1Мбайт. Имеет смысл кэшировать всю SDRAM, внутреннюю SRAM и флеш. Есть несколько но: 1. Если кешировать флэш, то из программы ничего в нее не запишешь без ухищрений. 2. Если используется DMA, то ее буфера проще организовать в некешируемой области. Таким образом, надо подумать над тем, везде ли включать кеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 13 ноября, 2008 Опубликовано 13 ноября, 2008 · Жалоба 1. Если кешировать флэш, то из программы ничего в нее не запишешь без ухищрений. Ну, это особый случай, а все "ухищрения" сводятся к отключению кэша на время записи. 2. Если используется DMA, то ее буфера проще организовать в некешируемой области. ...а если DMA работает только на вывод, то имеет смысл использовать write-through. Таким образом, надо подумать над тем, везде ли включать кеш. Да, думать нужно всегда :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться