Действительно, вначале начинает выполняться программа из внешнего ПЗУ (FLASH), подключенного к NCS0. Со стартового адреса в Вашем случае должна быть программка, которая берет другую программу, загруженную в это же ПЗУ и переписывает ее во внутреннюю RAM и передает ей управление. Т.е. эта вторая программа должна быть оттранслирована по адресам RAM, но находиться во внешней ПЗУ по другим адресам, откуда загрузчик будет ее переписывать. Непонятно, зачем переписывать программу из ПЗУ в ОЗУ? Чтобы быстрее работала?
Вопрос также в том, как программа попадает в FLASH. Если у Вас FLASH стоит на колодке и вы в нее записываете программатором, то нет проблем. Не нужен и загрузчик. Просто располагаете свою программу во ФЛЭШ и работаете оттуда. Но, конечно, для увеличения быстродействия программу нужно переписать в RAM и оттуда выполнять.
Если FLASH припаяна, тогда только через JTAG. Я делал так. 1. Через JTAG записываем в ОЗУ начальный загрузчик и запускаем его. 2. По UARTу передаем рабочую программу (я передавал в HEX коде), загрузчик берет ее, расшифровывает и записывает во FLASH. 3. Отключаем JTAG, запускаем программу из FLASH и наслаждаемся работой программы. Если ошибка программы переходим на п.1 и так до посинения, пока все не заработает.
Загрузчик писал сам, правда он весьма несовершенен.
|