|
TMS320F28335 - формирование .bin файла для записи из внутри, Нужно записать прошивку не через CCS, а через FlashAPI |
|
|
|
May 30 2014, 22:32
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Есть уже мной написанный загрузчик через CAN(пропустим особенности, они не нежны). Он получает прошивку, которую помещает в ОЗУ. От туда её нужно записать в DSP Flash чтоб потом нормально с неё загружаться. То есть, мне нужно записать прошивку, не через CCS, а через внтруннюю FlashAPI, своей программой.У меня TMS320F28335 - как устроено формирование .bin файла я разобрался, но не могу понять как сделать формирование этой прошивки в .bin для записи из ОЗУ внутри. Когда я получаю прошивку через CAN и записываю +передергиваю питание... она не стартует, а если ту же прошивку записать через CCS, то все работает. кстати если сразу после прошивки начать дебажить, то она работает. Также я проверил содержимое флэша, по тем адресам, что в бинарике, они так же там же находятся в флеше после записи, то есть полностью правильно записываются. Такая же задача, но с записью в OTP секцию - работает, а вот с записью в флэш - не получается..., возможно что то с линкер файлом. Помогите плиз разобраться с проблемой, а то уже мозги выкручиваются...
--------------------
|
|
|
|
|
 |
Ответов
|
May 31 2014, 15:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Ответте, пожалуйста на следующие вопросы: 1. Какой режим загрузки процессора выбран железно пинами (он не меняется!!!) и, соответственно, с каких адресов стартует процессор при включении питания? 2. Что делает OTP загрузчик после загрузки загрузчика второго уровня в RAM? Каждый ли раз при включении питания происходит загрузка загрузчика второго уровня в RAM? 3. Что делает загрузчик второго уровня после записи прошивки во флэш-память? Каждый ли раз при включении питания происходит загрузка прошивки и её запись во флэш? Цитата(PrSt @ May 31 2014, 20:50)  Щас вопрос не про загрузку. Там я уже разобрался давно. Тут вопрос про то если этот код загружен уже в ОЗУ и из него произвидится запись в флеш, тоесть мне прилетает стрим и я его должен записать, потом перегрузиться и должно работать с новой прошивкой. Тут и нужно понимать алгоритм запуска, всю последовательность передачи управления (из Вашего описания не совсем понятно), иначе ничего не должно работать, вобщем ответте на вопросы, а там дальше посмотрим. Цитата(PrSt @ May 31 2014, 20:50)  на данном этапе, в вопросе это по идее и не важно, исходим из того что программа уже в работе... Программа в работе, если процессор перешёл на адрес выполнения программы, тут-то у Вас, по-идее, и проблема. Цитата(PrSt @ May 31 2014, 20:50)  Да все стандартно, линкуются секции codestart .initboot .text cinit, .pinit ... итд. юзается библиотека rts2800_ml.lib которая предоставляет точку входа _c_int00 и она уже вызывает main() Классика. Классика, это когда выбран режим загрузки с флэша, вы кладёте прошивку по нужным адресам флэша и при включении питания она стартует. У Вас же несколько этапов загрузки, так что рассказывайте всё по-порядку.
|
|
|
|
|
May 31 2014, 19:59
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата( @ May 31 2014, 21:34)  Ответте, пожалуйста на следующие вопросы:
1. Какой режим загрузки процессора выбран железно пинами (он не меняется!!!) и, соответственно, с каких адресов стартует процессор при включении питания? у меня на плате по дефолту предполагается загрузка только в отп режиме. но так как щас еще не все части работают то я их вынужден проверять либо с флэша, либо с озу. Цитата( @ May 31 2014, 21:34)  2. Что делает OTP загрузчик после загрузки загрузчика второго уровня в RAM? Каждый ли раз при включении питания происходит загрузка загрузчика второго уровня в RAM? -переходит на адрес старта 2го уровня, который в свою очередь скачивает прошивку большого размера. это происходит не каждый раз, а только когда найден установленный флаг, иначе переходит на адрес выполнения старой программы и не обновляет. Цитата( @ May 31 2014, 21:34)  3. Что делает загрузчик второго уровня после записи прошивки во флэш-память? Каждый ли раз при включении питания происходит загрузка прошивки и её запись во флэш?
Тут и нужно понимать алгоритм запуска, всю последовательность передачи управления (из Вашего описания не совсем понятно), иначе ничего не должно работать, вобщем ответте на вопросы, а там дальше посмотрим. выше я уже написал что загрузка 2го не всегда, а только при наличии явного указания для обновления. Цитата( @ May 31 2014, 21:34)  Программа в работе, если процессор перешёл на адрес выполнения программы, тут-то у Вас, по-идее, и проблема.
Классика, это когда выбран режим загрузки с флэша, вы кладёте прошивку по нужным адресам флэша и при включении питания она стартует. У Вас же несколько этапов загрузки, так что рассказывайте всё по-порядку. у меня отп режим который при старте смотрит нужноли скачивать новую прошивку, если не нужно, старт старой. если нужно то качается 2го уровня, запускается, скачивается полностью фирмваря и записывается вместо старой.
--------------------
|
|
|
|
|
Jun 1 2014, 07:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(PrSt @ Jun 1 2014, 03:09)  И так, Ваш алгоритм старта процессора: (рисунок). 1. На плате железно выбран режим Boot To OTP. 2. Проверяем ветку, где не требуется загрузка новой прошивки. В ОТР прошит загрузчик, который должен стартануть основную программу. Основную программу заливаем при помощи CCS, ставим точку останова в начале main, из ССS делаем Reset, далее Run, процессор должен прийти на нашу точку останова. Если нет, разбираемся, что по каким адресам положили и почему ОТР загрузчик не стартует основную программу во флэш-памяти 3. Проверяем работу второй ветки аналогичным способом. Если уверены, что программа записывается правильно загрузчиком второго уровня, то заливаем её из CCS, ставим точку останова в начале main, из ССS делаем Reset, далее Run, и посылаем процессору загрузчик второго уровня и эту же прошивку, после перепрошивки флэша процессор должен попасть на нашу точку останова. Если нет, но уверены что во флэш легло всё правильно, то смотрим как передаётся управление загрузчиком второго уровня из RAM.
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 1 2014, 11:57
|

http://uschema.com
   
Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394

|
Цитата(doom13 @ Jun 1 2014, 13:56)  И так, Ваш алгоритм старта процессора: (рисунок). 1. На плате железно выбран режим Boot To OTP. 2. Проверяем ветку, где не требуется загрузка новой прошивки. В ОТР прошит загрузчик, который должен стартануть основную программу. Основную программу заливаем при помощи CCS, ставим точку останова в начале main, из ССS делаем Reset, далее Run, процессор должен прийти на нашу точку останова. Если нет, разбираемся, что по каким адресам положили и почему ОТР загрузчик не стартует основную программу во флэш-памяти о, вот комбинировано я еще не пробовал, все время симуллировал, то в флеше, то в озу. Спасибо за совет. Цитата(doom13 @ Jun 1 2014, 13:56)  3. Проверяем работу второй ветки аналогичным способом. Если уверены, что программа записывается правильно загрузчиком второго уровня, то заливаем её из CCS, ставим точку останова в начале main, из ССS делаем Reset, далее Run, и посылаем процессору загрузчик второго уровня и эту же прошивку, после перепрошивки флэша процессор должен попасть на нашу точку останова. Если нет, но уверены что во флэш легло всё правильно, то смотрим как передаётся управление загрузчиком второго уровня из RAM. Да именно так и делаю, сегодня как раз дебажил (но еще не до конца). Все так, только за одним исключением, я прыгаю не на 0033fff6, а на EntryPoint, который мне сообщается в бинарике. Подскажите тогда сразу по ходу и на другие вопросы - ответы. 1) Столкнулся с глюком CCS изза которого пришлось делать все через свою прогу 2го уровня. А точнее, вот создал я прошивку для OTP но при записи средствами CCS (F11) она не стартует после рестарта и разумеется плата с уже установленными пинами в отп загрузку. Но если я записую эту же прошивку своим загрузчиком 2го уровня, то все отлично(только для отп не делаю стирания перед записью). Выглядит как будто какойто косяк в CCS. Но чтото мне подсказывает что это не так. может встречались с таким? 2) Как быть? прошивку для OTP я слелал (допустим уже она финально отлажена) как теперь на производстве массово её прошивать, сотнями-тысячами в день? Вчера начальник сказал это вопрос тоже первостепенной важности и его нужно решить. Разумеется отдавать на завод исходники чтоб они компилили и прошивали, так это точно не способ. Вот как тут быть? Подскажите. Сегодня нашел прогу C2Prog но чтото она не работает с моим эмулятором, так что проверить не смог. Какие еще есть варианты?
--------------------
|
|
|
|
Сообщений в этой теме
PrSt TMS320F28335 - формирование .bin файла для записи из внутри May 30 2014, 22:32 doom13 Цитата(PrSt @ May 31 2014, 05:42)
Вообще... May 31 2014, 09:27 PrSt Цитата(doom13 @ May 31 2014, 15:37) Вообщ... May 31 2014, 13:40 Turnaev Sergey +1 к Boot Mode Select. May 31 2014, 09:45    doom13 Цитата(PrSt @ Jun 1 2014, 19:07) Все так,... Jun 1 2014, 12:41     PrSt Цитата(doom13 @ Jun 1 2014, 18:51) Ну это... Jun 4 2014, 12:11      doom13 Цитата(PrSt @ Jun 4 2014, 19:21) Я попыта... Jun 4 2014, 14:28       PrSt Цитата(doom13 @ Jun 4 2014, 21:38) Не сов... Jun 7 2014, 09:08        doom13 Цитата(PrSt @ Jun 7 2014, 16:18) У меня 2... Jun 7 2014, 14:44        Vladm Цитата(PrSt @ Jun 7 2014, 17:18) Если чес... Jun 8 2014, 15:54         PrSt Цитата(Vladm @ Jun 8 2014, 22:04) Так. Да... Jun 14 2014, 04:25          doom13 Цитата(PrSt @ Jun 14 2014, 07:25) Только ... Jun 16 2014, 10:07           PrSt Цитата(doom13 @ Jun 16 2014, 12:07) Что-т... Jun 17 2014, 11:55      Vladm Цитата(PrSt @ Jun 4 2014, 20:21) А пробле... Jun 4 2014, 14:29      Turnaev Sergey Цитата(PrSt @ Jun 4 2014, 20:21) CCS3 не ... Jun 4 2014, 16:06       Vladm Цитата(Turnaev Sergey @ Jun 5 2014, 00:16... Jun 5 2014, 00:22    Vladm Цитата(PrSt @ Jun 1 2014, 20:07) о, вот к... Jun 4 2014, 02:41 1108 Цитата(PrSt @ May 31 2014, 06:42) Есть уж... Jun 3 2014, 05:13 doom13 Цитата(1108 @ Jun 3 2014, 12:23) Делал св... Jun 3 2014, 05:37  1108 Цитата(doom13 @ Jun 3 2014, 13:47) Ваш ва... Jun 4 2014, 07:06 IDL Здравствуйте, уважаемые специалисты. У меня сходна... Jan 21 2016, 13:41 doom13 Тут было начало разговора, можете глянуть, возможн... Jan 21 2016, 14:17 IDL Цитата(doom13 @ Jan 21 2016, 17:17) Тут б... Jan 21 2016, 16:16 doom13 Не совсем понятно, что Вы хотите сделать. Этим пер... Jan 21 2016, 19:53 IDL Цитата(doom13 @ Jan 21 2016, 22:53) Не со... Jan 21 2016, 20:33 doom13 В той теме, если не ошибаюсь, этот процесс расписа... Jan 21 2016, 20:57 IDL Скорее всего у меня не получалось, потому что cmd ... Jan 22 2016, 06:07 IDL Еще раз всем привет. С прыжками и выполнением прог... Jan 22 2016, 11:29 doom13 У нас использовался ACII-HEX формат, загрузчик сам... Jan 22 2016, 11:52 IDL Цитата(doom13 @ Jan 22 2016, 14:52) У нас... Jan 22 2016, 11:55 IDL doom13, а не подскажете про формат ASCII-HEX? CCS ... Jan 22 2016, 13:16 doom13 Правила преобразования смотрите в Assembly Languag... Jan 22 2016, 13:58 IDL Разобрался, большое спасибо. Jan 25 2016, 08:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|