реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как Keil заливает прошивку в МК ?
-=Sergei=-
сообщение Oct 3 2008, 08:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 26-10-04
Пользователь №: 985



Интересует вот такой вопрос.
Как Keil заливает прошивку в МК. Где бы про это почитать.
Т.е. я представляю два варианта:

1. Через отладочный режим.
т.е. запускаем мк в пошаговом режиме и через программатор отладчик подсовываем команды некоторой программы, которая осуществляет запись во флеш.

2. Через спец режим.
т.е. МК запускается из какого либо внутреннего ПЗУ где лежит программа по прошивке и общаясь с Keil по какому либо протоколу через программатор записывает прошивку во флеш.

Я так думаю, что там первый вариант. Если это так то где собственно эта программа, что бы посмотреть как пишется во флеш.
Go to the top of the page
 
+Quote Post
goodwin
сообщение Oct 3 2008, 08:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Да стандартно - с помощью JTAG в кристалл записывается загрузчик, потом этот загрузчик, управляясь по тому-же jtag, пишет флэш.
Go to the top of the page
 
+Quote Post
-=Sergei=-
сообщение Oct 3 2008, 08:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 26-10-04
Пользователь №: 985



Цитата(goodwin @ Oct 3 2008, 12:30) *
Да стандартно - с помощью JTAG в кристалл записывается загрузчик, потом этот загрузчик, управляясь по тому-же jtag, пишет флэш.


А куда записывается загрузчик ?
И почему бы всю флеш не прописать так же как записывается загрузчик ?
И опять таки Keil "знает" все программы загрузчики для всех кристаллов которые он умеет программировать ?
Go to the top of the page
 
+Quote Post
FormatCft
сообщение Oct 3 2008, 09:10
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 331
Регистрация: 22-07-08
Из: Р О С С И Я
Пользователь №: 39 145



Цитата(-=Sergei=- @ Oct 3 2008, 13:52) *
А куда записывается загрузчик ?
И почему бы всю флеш не прописать так же как записывается загрузчик ?
И опять таки Keil "знает" все программы загрузчики для всех кристаллов которые он умеет программировать ?

ИМХО, загрузчик в 8КБ лежит в последних секторе(ах) флешки, недоступном(ых) для пользователя ни через что.
Например про это можно почитать здесь: UM2368 Chapter 27.

Сообщение отредактировал FormatCft - Oct 3 2008, 09:18
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 3 2008, 10:45
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(-=Sergei=- @ Oct 3 2008, 12:52) *
А куда записывается загрузчик ?

В ОЗУ, куда же ещё?

Цитата(-=Sergei=- @ Oct 3 2008, 12:52) *
И почему бы всю флеш не прописать так же как записывается загрузчик ?

Потому что совсем не факт, что все микроконтроллеры, которые поддерживает Keil, могут прошивать флэш командами JTAG, если вообще какие-нибудь могут. А вот с загрузчиком в ОЗУ можно прошить любой микроконтроллер, который поддерживает функцию IAP (in-application programming).

Цитата(FormatCft @ Oct 3 2008, 13:10) *
ИМХО, загрузчик в 8КБ лежит в последних секторе(ах) флешки, недоступном(ых) для пользователя ни через что.
Например про это можно почитать здесь: UM2368 Chapter 27.

Разве тут упоминался конкретный микроконтроллер? Кроме NXP есть и другие производители.
Go to the top of the page
 
+Quote Post
-=Sergei=-
сообщение Oct 3 2008, 12:52
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 26-10-04
Пользователь №: 985



Цитата(scifi @ Oct 3 2008, 14:45) *
В ОЗУ, куда же ещё?
Потому что совсем не факт, что все микроконтроллеры, которые поддерживает Keil, могут прошивать флэш командами JTAG, если вообще какие-нибудь могут. А вот с загрузчиком в ОЗУ можно прошить любой микроконтроллер, который поддерживает функцию IAP (in-application programming).
Разве тут упоминался конкретный микроконтроллер? Кроме NXP есть и другие производители.



Спасибо. Вроде разобрался.

Производитель нового МК делает небольшой проект (шаблон которого предлагает Кейл) и описывает функции EraseChip, EraseBlock, ProgramBlock, Init and UnInit , компилирует и затем полученный HEX сохраняется в \KEIL\ARM\FLASH\. В окне Configure Flash Download dialog затем можно загрузить эту прошивку в ОЗУ и Кеил работает с известными ему функциями для прошивки.

Т.е. кейл знает только данные функции, а как уже реализованы функции лежит на совести производителя МК.

Остается вопрос.

ГДЕ ФУНКЦИЯ ReadBlock ?
Go to the top of the page
 
+Quote Post
meister
сообщение Oct 3 2008, 14:27
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(-=Sergei=- @ Oct 3 2008, 16:52) *
ГДЕ ФУНКЦИЯ ReadBlock?


#define ReadBlock memcpy
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Oct 3 2008, 16:07
Сообщение #8


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



А ещё можно программировать внешней утилитой, поддерживающей командную строку. В этом случае наличие какого бы то ни было загрузчика в МК необязательно. Открываем "Flash" - "Configure Flash Tools". Там отмечаем "Use External Tool for Flash Programming". В поле "Command" вводим имя .exe-файла утилиты (если нужно, то полный путь к нему), в поле "Arguments" - необходимые ключи. Пример:

Command:
FM.EXE
Arguments:
"DEVICE($D,$X) INTERFACE(NXPICPBRIDGE) ERASEUSED("#H",PROTECTISP) HEXFILE("#H",NOCHECKSUMS,NOFILL,PROTECTISP) COM(2,19200) HARDWARE(KEILMCB900)"
- используется программа "Flash Magic", $D - DEVICE - берётся из проекта, $X - тактовая частота, тоже из проекта, режим работы программатора - ISP/ICP мост, стирать только блоки, используемые прошиваемым .hex-файлом и т.д. и т.п.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016