Полный аут.
И как я до Вас жил и работал, писал стартапы и загрузчики в том числе и для Corteх, просто не понимаю. Все было-бы весело, если-бы не было так глупо.
В обеих примерах стартапа мною показаны моменты инициализации содержимого нулевого адреса, указателем на стек, ввиду абсолютной очевидности, того факта, что именно этим значением и инициализируется SP при старте, и этим-же значением уже программно инициализирует стек промежуточный загрузчик, если он есть. Непонимание Вами сего банального факта из жизни Cortex оказалось для меня уж слишком неожиданным.

В обеих примерах стартапа мною показаны моменты инициализации содержимого нулевого адреса, указателем на стек, ввиду абсолютной очевидности, того факта, что именно этим значением и инициализируется SP при старте, и этим-же значением уже программно инициализирует стек промежуточный загрузчик, если он есть. Непонимание Вами сего банального факта из жизни Cortex оказалось для меня уж слишком неожиданным.
Так Вы когда добавляли lpc17xx к своей проге. просто забыли про это?
И сделали Go в конце загрузки? А когда просвещали меня о том, что инициализация sp в стартаре делается, вспомнили, что не делается и
внесли изменегия в свою прогу?
Вона она оказывается как!
вы точно в своем уме? все разжевали уже.
в этой цитате и вопрос, и ответ.
почитайте, наконец, офф доки... если сможете понять там что-то...
Cortex-M3 Technical Reference Manual, секция 5.9.1. Vector Table and Reset
также советую заглянуть в секцию Chapter 4. Memory Map, которая и расскажет, откуда появились магические цифры, точнее - на какие области они указывают
в этой цитате и вопрос, и ответ.
почитайте, наконец, офф доки... если сможете понять там что-то...
Cortex-M3 Technical Reference Manual, секция 5.9.1. Vector Table and Reset
также советую заглянуть в секцию Chapter 4. Memory Map, которая и расскажет, откуда появились магические цифры, точнее - на какие области они указывают
Так Ваша версия какова?
Инициализация sp делается аппаратно - то есть добавлена соответствующая логика в железо, или все же делается программно?
То есть, путем перехода на кусок кода во флеше, в котором эта инициализация прописана?
В общем, с запуском чипа после ресета более меннее ясно.
Ответ таков - смотри исходники кривого "бангалорского" бутлоадера.
Он, в отличии от родного ( из РОМ ) прогу со стартапом в ОЗУ запускает правильно.
Следующий вопрос - озаботился я тут SPI.
Нужна простая штука - мастер посылает в слайв байт-команду. Их всего два типа - записать в регистр по указанному адресу и считать из
регистра по указанному адресу.
В первом случае через один такт ожидания мастер посылает байт-значение регистра.
Во втором случае через один такт ожидания мастер читает или байт-значение или 16бит-значение.
Оказывается, такой вариант SPI в кортексе не реализован.
Зато реализованы 5 других вариантов, среди которых есть похожий на вышеописанный, но первый вариант он исполнять не умеет,
умеет только чтение из слейва.
Или я чего то там не понял или где?