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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Входит ли файл regxxxx.h в объём программы ?
TeddyIn
сообщение Jan 4 2009, 06:37
Сообщение #1


Участник
*

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



Доброго времени суток!
Хочу освоить С51, в частности например P89LPC9107, в даташите написано, что память программ - 1кВ (4 страницы по 256 байт),

Но если писать к нему прогу, например в Кейле, то там только #include <REG9107.H> уже больше двух килобайт весит, и соответственно, .НЕХ код получается почти 4 кВ??? Как такое возможно, и как его прошивать?

Заранее извиняюсь за незнание smile.gif


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
psL
сообщение Jan 4 2009, 07:54
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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(;;);
}

тогда размер .НЕХ будет зависеть только от размера стартап-кода.
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 4 2009, 08:14
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
Alex11
сообщение Jan 4 2009, 09:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Сами заголовочные файлы не влияют на размер, как Вы сами убедились, но как только Вы используете хоть одну функцию из stdio, например, то тут же приплывет весь ввод-вывод по полной программе.
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 4 2009, 18:12
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



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


Участник
*

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



Не могу найти в даташите к проге, в чем сии цифры измеряются? smile.gif


Извините за вопрос чайника, но уже все выяснил -> вторая цифра - это размер BIN кода в байтах )))
(скачал и запустил НЕХ2ВIN)
а насчет первой принципе уже все рано )

Сообщение отредактировал TeddyIn - Jan 6 2009, 19:18
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 6 2009, 19:09
Сообщение #7


Участник
*

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



Спасибо a14.gif , скачал сейчас, и действительно, размер BIN файла почти в 3 раза меньше, чем HEX-80, который создаёт Keil! Что собственно очень сильно радует biggrin.gif


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
DeadMoroz
сообщение Jan 6 2009, 23:38
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-02-05
Пользователь №: 2 391



1я - в байт.бит (т.к переменные также можно размещать в bit-addressable области SFR).
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 7 2009, 11:34
Сообщение #9


Участник
*

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



ок

Сообщение отредактировал TeddyIn - Jan 7 2009, 11:44


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 7 2009, 12:04
Сообщение #10


Участник
*

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



У кого нибудь такое было - если его запустить - остановить - снова запустить, то значение логического порта, которое по идее должно оставаться 1 при новом запуске (без сброса) сбрасывается на 0...


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 7 2009, 13:23
Сообщение #11


Участник
*

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



Да да да ), так и есть - загнал вместо аналайзера весь выход на UART - и там все нормально (останавливай не останавливай - на dыходе printf все значения правильные) smile.gif
Выявлен баг 3-ей версии Keil.
У кого лицензионный Кейл? - можете сообщить производителю - пусть исправляет в следующей ревизии!


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
тау
сообщение Jan 7 2009, 13:30
Сообщение #12


.
******

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



У кейла всё что касается printf scanf и имхо putchar - в отладчике не симулируется и кейл в окно SERIAL выводит нечто изнутри себя , видимо перехватывая сами входы в функции в симуляторе и не давая им выполняться. Может отсюда ноги растут?
SBUF=хх не работает через окно SERIAL !!!!
Таким образом эмуляция не на уровне буфера приемопередатчика а по самим функциям . Проверял неоднократно. Багом они это не посчитают а пошлют.
Go to the top of the page
 
+Quote Post
TeddyIn
сообщение Jan 7 2009, 14:16
Сообщение #13


Участник
*

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



Цитата(тау @ Jan 7 2009, 23:30) *
видимо перехватывая сами входы в функции в симуляторе и не давая им выполняться. Может отсюда ноги растут?

а что это значит? не давая им где выполняться?
Цитата
Таким образом эмуляция не на уровне буфера приемопередатчика а по самим функциям .


А разве тут есть какие то различия?


--------------------
висячий монтаж -> лак - > ЦЛ - > ЛУТ - > ФР - > ?
оу -> стабилизаторы - > драйверы -> микроконтроллеры - > ?
Go to the top of the page
 
+Quote Post
тау
сообщение Jan 7 2009, 14:24
Сообщение #14


.
******

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



Цитата
а что это значит? не давая им где выполняться?

В теле кода printf() например . попробуйте в окне дизассм поставить там точки прерывания(отладки) - никогда не остановится . гыгы.
Цитата
А разве тут есть какие то различия?

огромные, нельзя например отладить через SeRIAL окно свою программу вывода.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 7 2009, 16:15
Сообщение #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)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:02
Рейтинг@Mail.ru


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