Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Описание Keil Си для ARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
syoma
Привет.
Прошу не пинать ногами, если уже 100 раз поднималось - не нашел.
В бытность начинал на Keil для 8051 и там в комплекте был конкретно расписанный Manual с указанием особенностей программирования именно для 8051 контроллеров.
Сейчас листаю help к Keil Realview и ихнему Компилятору Си и ничего такого не нахожу.
Именно нужны стандартные вещи, то есть особенности применения ихнего Си для:
- определения переменных в различных областях памяти (ОЗУ, FLASH, EEPROM и т.д)
- использование битовых переменных
- определение SFR (регистры специальных функций или периферии)
- определение функций-обработчиков прерываний.
- различные pragma функции и т.д.
В общем хочется найти одну книгу или желательно что-нибудь online, чтобы все было в одном месте.
Может кто, что подсказать?
rezident
На сайте производителя разве не оно (on-line manual)? cranky.gif
http://www.keil.com/support/man_c51.htm
http://www.keil.com/support/man_arm.htm
syoma
Да, только если открыть http://www.keil.com/support/man/docs/c51/c51_extensions.htm , то все понятно описано, например как задается функция - обработчик прерывания "Language Extensions » Function Declarations » Interrupt Functions". Причем с примером, дохотчиво и с таблицей прерываний.
А где про это сказано для ARM? http://www.keil.com/support/man/docs/armcc...ef_tgacfch3.htm
Ах да - вот же - Compiler-specific Features » Keywords and operators » __irq , только как ее использовать - не написали.
igorsk
Цитата(syoma @ Jul 6 2010, 19:44) *
В бытность начинал на Keil для 8051 и там в комплекте был конкретно расписанный Manual с указанием особенностей программирования именно для 8051 контроллеров.
Сейчас листаю help к Keil Realview и ихнему Компилятору Си и ничего такого не нахожу.

У армов нет жестко фиксированной карты памяти (за исключением Cortex-M), регионы меняются от чипа к чипу. Расстановкой переменных занимается линковщик, вручную этого делать необходимости обычно нет.
Неизменяемые переменные (const) идут во флэш. Инициализированные (static int counter = 1) инициализируются стартапом в ОЗУ. Остальные переменные размещаются в ОЗУ и обычно инициализируются нулями.
EEPROM это что-то вроде энергонезависимой памяти? Такого стандартно нет. Многие производители предлагают IAP (In-application programming), он у каждого свой.
Битовые переменные можно эмулировать битовыми полями в структурах, но это это не особо эффективно, да и не нужно обычно - памяти-то не 256 байт. Кстати, советую не жадничать и не объявлять байтовых переменных - памяти они экономят немного, а компилятору приходится генерировать дополнительный код для обрезания после почти каждой операции. Стандартный (unsigned) int практически всегда оптимален.
SFR нет стандартных (за исключением нескольких регионов в Cortex-M), опять же смотрите документацию по конкретному чипу и хидеры от производителя.
По интринсинкам можно посмотреть тут, по прагмам тут. Но они редко нужны в обычном коде.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.