|
Входит ли файл regxxxx.h в объём программы ? |
|
|
|
Jan 4 2009, 06:37
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Доброго времени суток! Хочу освоить С51, в частности например P89LPC9107, в даташите написано, что память программ - 1кВ (4 страницы по 256 байт), Но если писать к нему прогу, например в Кейле, то там только #include <REG9107.H> уже больше двух килобайт весит, и соответственно, .НЕХ код получается почти 4 кВ??? Как такое возможно, и как его прошивать? Заранее извиняюсь за незнание
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 4 2009, 07:54
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(TeddyIn @ Jan 4 2009, 09:37)  там только #include <REG9107.H> уже больше двух килобайт весит, и соответственно, .НЕХ код получается почти 4 кВ??? Как такое возможно, и как его прошивать? #include <REG9107.H> - это грубо говоря привязки символьных имен к конкретным адресам в контроллере. Размер этого файла на размер hex влиять не должен. Минимальный размер можно посмотреть если собрать проект с одним С файлом: Код #include <REG9107.H>
void main(void) { for(;;); } тогда размер .НЕХ будет зависеть только от размера стартап-кода.
|
|
|
|
|
Jan 4 2009, 08:14
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Цитата(psL @ Jan 4 2009, 17:54)  #include <REG9107.H> - это грубо говоря привязки символьных имен к конкретным адресам в контроллере. Размер этого файла на размер hex влиять не должен. Минимальный размер можно посмотреть если собрать проект с одним С файлом: Код #include <REG9107.H>
void main(void) { for(;;); } тогда размер .НЕХ будет зависеть только от размера стартап-кода. Спасибо, действительно, 136 В получилось, да и ещё на схем.нет говорят, что BIN файл должен быть меньше, чем НЕХ. Тогда вот еще же есть всякие stdio, math ... - они то уж влияют на размер? (хотя щас сам посмотрю) Ан нет, добавил STDIO.H, размер тот же ))
Сообщение отредактировал TeddyIn - Jan 4 2009, 08:12
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 4 2009, 18:12
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(TeddyIn @ Jan 4 2009, 13:14)  на схем.нет говорят, что BIN файл должен быть меньше, чем НЕХ. Прошивка в формате BIN имеет тот же размер, что и прошивка в памяти программ микроконтроллера. А файл в формате (Intel) HEX это всего лишь специальный формат представления данных той же прошивки. Если прошивка представляет из себя непрерывную область памяти (в противном случае вовсе не обязательно, что следующее утверждение справедливо), то HEX-файл на диске вашего компьютера конечно же больше места займет. Но в процессе загрузки его в память программ микроконтроллера он преобразуется в тот же размер, что и BIN. Есть специальные утилиты BIN2HEX и HEX2BIN для преобразования файлов из одного формата в другой. Найти их можно, например, на сайте Keil. Так что по большому счету для вас нет особой разницы в каком формате будет представлена прошивка.
|
|
|
|
|
Jan 6 2009, 19:17
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Не могу найти в даташите к проге, в чем сии цифры измеряются? Извините за вопрос чайника, но уже все выяснил -> вторая цифра - это размер BIN кода в байтах ))) (скачал и запустил НЕХ2ВIN) а насчет первой принципе уже все рано )
Сообщение отредактировал TeddyIn - Jan 6 2009, 19:18
Эскизы прикрепленных изображений
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 6 2009, 19:09
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Спасибо  , скачал сейчас, и действительно, размер BIN файла почти в 3 раза меньше, чем HEX-80, который создаёт Keil! Что собственно очень сильно радует
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 7 2009, 11:34
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
ок
Сообщение отредактировал TeddyIn - Jan 7 2009, 11:44
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 7 2009, 12:04
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
У кого нибудь такое было - если его запустить - остановить - снова запустить, то значение логического порта, которое по идее должно оставаться 1 при новом запуске (без сброса) сбрасывается на 0...
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 7 2009, 13:23
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Да да да ), так и есть - загнал вместо аналайзера весь выход на UART - и там все нормально (останавливай не останавливай - на dыходе printf все значения правильные)  Выявлен баг 3-ей версии Keil. У кого лицензионный Кейл? - можете сообщить производителю - пусть исправляет в следующей ревизии!
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 7 2009, 14:16
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 4-01-09
Из: Владивосток
Пользователь №: 42 911

|
Цитата(тау @ Jan 7 2009, 23:30)  видимо перехватывая сами входы в функции в симуляторе и не давая им выполняться. Может отсюда ноги растут? а что это значит? не давая им где выполняться? Цитата Таким образом эмуляция не на уровне буфера приемопередатчика а по самим функциям . А разве тут есть какие то различия?
--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ? оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
|
|
|
|
|
Jan 7 2009, 14:24
|

.
     
Группа: Участник
Сообщений: 2 424
Регистрация: 25-12-08
Пользователь №: 42 757

|
Цитата а что это значит? не давая им где выполняться? В теле кода printf() например . попробуйте в окне дизассм поставить там точки прерывания(отладки) - никогда не остановится . гыгы. Цитата А разве тут есть какие то различия? огромные, нельзя например отладить через SeRIAL окно свою программу вывода.
|
|
|
|
|
Jan 7 2009, 16:15
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(тау @ Jan 7 2009, 16:24)  огромные, нельзя например отладить через SeRIAL окно свою программу вывода. Ее можно отладить с реальным терминалом. Кейловый отладчик позволяет перенаправить UART из симулятора на реальный COM-порт. Дальше, если в компе есть два свободных COM-порта, замыкаем их нуль-модемным кабелем, а если нет - ставим виртуальный нуль-модем и на один из его портов натравливаем симулятор, на второй - терминалку или PC-приложения общения с вашим прибором. Шикарная опция, позволяет одновременно пошагово отлаживать и вашу программу и ответное PC-приложение.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|