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

 
 
> Размер unsigned int или int Keil4.5
TAutomatic
сообщение Jun 2 2012, 11:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Добрый день, коллеги.
Месяц использую LPC1768 и только сейчас с "ужасом" заметил, что под переменные unsigned int и int компилятор отводит по 4 байта.
Использую среду Keil 4.5 и постоянно плююсь даже не по причине ее скудости, а по причине неудобности документации на нее и компилятор. Как установить "нормальный" размер этих типов данных размером в 2 байта?
И второй вопрос. Я был уверен, что в Cortex-M3 отсутствует необходимость выравнивания разноразмерных типов данных.
Об этом написано тут
Тем не менее, у себя в реале я этого не вижу. Если за однобайтовой переменной следует четырехбайтовая, то она все равно выравнивается по границе 32 разрядного слова, тоесть остается неиспользуемый промежуток в 3 байта. Что тут не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
brag
сообщение Jun 9 2012, 05:44
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



В Cortex-M3 выравнивание можно сказать, всегда нужно, читайте DDI0403D_arm_architecture_v7m_reference_manual_errata_markup_1_0. Unaligned access поддерживают только инструкции LDR, LDRT, LDRH, LDRHT, LDRSH, LDRSHT, STR, STRT, STRH, STRHT, но есть и другие, активно используемые компилятором, на пример LDM, которые сразу дадут UsageFault.
Я всегда устанавливаю UNALIGN_TRP, тогда любая инструкция, выполняющая Unaligned access даст UsageFault. чтобы быстрее баги отловить..
К стати в Cortex-M3 нету ущерба производительности при Unaligned access.
Такчто, если память будет использоватся компилятором, то выравнивание нужно обязательно, читайте IHI0042D_aapcs.
Единственное, где Unaligned access может быть полезен - это заполнение полей структур протоколов(USB, на пример), но делать это нужно ручками через __ldr()/__str() intrinsincs - что более предпочтительно - intrinsinc или ручками побайтно - решать вам.

Раз уж о выравнивании, то стек должен быть всегда выравнян до 8 байт, иначе при переходе на новый проц напоретесь на баги, тк "ARM deprecates implementation or use of 4-byte SP alignment." К тому же в IHI0042D_aapcs сказано: "Stack constraints at a public interface - The stack must be double-word aligned." (это при вызове публической функции, на пример).
Go to the top of the page
 
+Quote Post
TAutomatic
сообщение Jun 9 2012, 15:47
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798



Цитата(brag @ Jun 9 2012, 08:44) *
Я всегда устанавливаю UNALIGN_TRP, тогда любая инструкция, выполняющая Unaligned access даст UsageFault. чтобы быстрее баги отловить..

Как эту ловушку использовать?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TAutomatic   Размер unsigned int или int Keil4.5   Jun 2 2012, 11:17
- - ohmjke   Размер int равен размеру машинного слова. В данном...   Jun 2 2012, 11:27
|- - TAutomatic   Цитата(ohmjke @ Jun 2 2012, 14:27) Размер...   Jun 2 2012, 11:33
- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:17) Ка...   Jun 2 2012, 11:30
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:30) Исполь...   Jun 2 2012, 11:43
|- - TAutomatic   Получается, все же есть в <stdint.h> - short...   Jun 2 2012, 11:47
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:43) Пе...   Jun 2 2012, 11:49
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 14:49) А вы п...   Jun 2 2012, 11:53
|- - prottoss   Цитата(TAutomatic @ Jun 2 2012, 17:53) По...   Jun 2 2012, 12:20
||- - TAutomatic   Цитата(prottoss @ Jun 2 2012, 15:20) Вам ...   Jun 2 2012, 12:36
|- - aaarrr   Цитата(TAutomatic @ Jun 2 2012, 15:53) По...   Jun 2 2012, 12:43
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 15:43) Сами р...   Jun 2 2012, 12:54
||- - scifi   Цитата(TAutomatic @ Jun 2 2012, 16:54) Но...   Jun 2 2012, 18:40
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 18:43) Кодuns...   Jun 2 2012, 12:56
|- - aaarrr   Цитата(prottoss @ Jun 2 2012, 16:56) Наве...   Jun 2 2012, 13:05
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 19:05) Нет. К...   Jun 2 2012, 13:10
|- - TAutomatic   Цитата(aaarrr @ Jun 2 2012, 16:05) Нет. К...   Jun 5 2012, 05:51
- - ohmjke   ЦитатаМашинное слово — машиннозависимая и платформ...   Jun 2 2012, 11:37
- - ohmjke   Написали же, 2 байтовый это short.   Jun 2 2012, 11:45
- - ohmjke   short он не из stdint.h, а просто является частью ...   Jun 2 2012, 11:50
- - ivainc1789   Не хотел создавать новую тему... Можно ли спросить...   Jun 2 2012, 12:21
|- - ohmjke   Цитата(ivainc1789 @ Jun 2 2012, 16:21) Не...   Jun 2 2012, 12:26
|- - prottoss   Цитата(ivainc1789 @ Jun 2 2012, 18:21) За...   Jun 2 2012, 12:30
- - aaarrr   Char может быть расположен как угодно - на скорост...   Jun 2 2012, 13:28
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 19:28) Char м...   Jun 2 2012, 13:50
|- - aaarrr   Цитата(prottoss @ Jun 2 2012, 17:50) С пе...   Jun 2 2012, 14:02
|- - prottoss   Цитата(aaarrr @ Jun 2 2012, 20:02) Объясн...   Jun 2 2012, 14:23
- - esaulenka   Я бы предложил не заниматься всякой фигнёй. Особен...   Jun 5 2012, 11:40
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 5 2012, 16:57
|- - IgorKossak   Цитата(esaulenka @ Jun 5 2012, 14:40) Кей...   Jun 5 2012, 20:08
||- - Dron_Gus   Цитата(IgorKossak @ Jun 6 2012, 00:08) Ке...   Jun 5 2012, 20:24
|- - TAutomatic   Цитата(esaulenka @ Jun 5 2012, 14:40) Я б...   Jun 6 2012, 04:53
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 07:53) На...   Jun 6 2012, 05:33
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 08:33) Вставил ...   Jun 6 2012, 06:22
|- - demiurg_spb   Цитата(TAutomatic @ Jun 6 2012, 09:22) вд...   Jun 6 2012, 06:30
|- - IgorKossak   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 06:44
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 09:22) А ...   Jun 6 2012, 08:43
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 11:43) У переме...   Jun 6 2012, 12:31
|- - ViKo   Цитата(TAutomatic @ Jun 6 2012, 15:31) Я ...   Jun 6 2012, 13:05
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 16:05) Я провер...   Jun 6 2012, 13:48
- - ViKo   Проверил с тремя __packed. Так я не пробовал. ...   Jun 6 2012, 14:01
|- - TAutomatic   Цитата(ViKo @ Jun 6 2012, 17:01) Проверил...   Jun 6 2012, 14:07
- - andrewlekar   Ребята, я вас умоляю, не делайте так в рабочем код...   Jun 7 2012, 04:45
|- - TAutomatic   Цитата(andrewlekar @ Jun 7 2012, 07:45) Р...   Jun 7 2012, 06:18
|- - Dron_Gus   Цитата(TAutomatic @ Jun 7 2012, 10:18) Да...   Jun 7 2012, 07:22
||- - TAutomatic   Цитата(Dron_Gus @ Jun 7 2012, 10:22) С пе...   Jun 7 2012, 08:16
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 14:16) Ну...   Jun 7 2012, 09:08
||- - Dron_Gus   Цитата(jcxz @ Jun 7 2012, 13:08) Позвольт...   Jun 7 2012, 09:20
||- - TAutomatic   Цитата(jcxz @ Jun 7 2012, 12:08) Позвольт...   Jun 7 2012, 09:40
||- - demiurg_spb   Цитата(TAutomatic @ Jun 7 2012, 12:40) Дв...   Jun 7 2012, 10:02
||- - jcxz   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:10
||- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 12:40) за...   Jun 7 2012, 10:16
|||- - jcxz   Цитата(ViKo @ Jun 7 2012, 16:16) Покажите...   Jun 7 2012, 10:20
||- - AHTOXA   Цитата(TAutomatic @ Jun 7 2012, 15:40) Ра...   Jun 7 2012, 10:17
||- - TAutomatic   Цитата(AHTOXA @ Jun 7 2012, 13:17) Может,...   Jun 7 2012, 10:27
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 09:18) Вс...   Jun 7 2012, 10:26
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:26) Вы не о ...   Jun 7 2012, 10:33
|- - ViKo   Цитата(TAutomatic @ Jun 7 2012, 13:33) См...   Jun 7 2012, 10:58
|- - TAutomatic   Цитата(ViKo @ Jun 7 2012, 13:58) При любо...   Jun 7 2012, 16:40
- - ViKo   Герберд Шилдт. Полный справочник по C. (в электрон...   Jun 7 2012, 05:53
- - andrewlekar   ЦитатаА при чем тут придет и не поймет rolleyes.gi...   Jun 7 2012, 06:40
|- - TAutomatic   Цитата(andrewlekar @ Jun 7 2012, 09:40) В...   Jun 7 2012, 07:04
- - exeron   Какой упоротый попался... Вам уже цитату из Шилдта...   Jun 7 2012, 10:33
- - KRS   Вообще то для того что бы расположить глобальные о...   Jun 7 2012, 20:19
|- - TAutomatic   Цитата(KRS @ Jun 7 2012, 23:19) Вообще то...   Jun 8 2012, 04:44
|- - demiurg_spb   Цитата(TAutomatic @ Jun 8 2012, 07:44) Со...   Jun 8 2012, 07:11
|- - KRS   Цитата(TAutomatic @ Jun 8 2012, 08:44) Ед...   Jun 8 2012, 09:44
- - esaulenka   Дурацкий вопрос: union-то зачем? Вполне достаточно...   Jun 8 2012, 09:59
|- - KRS   Цитата(esaulenka @ Jun 8 2012, 13:59) Дур...   Jun 8 2012, 12:19
- - brag   Вешаем обработчик на исключение UsageFault, а в не...   Jun 9 2012, 16:34
- - TAutomatic   Цитата(brag @ Jun 9 2012, 19:34) Вешаем о...   Jun 9 2012, 18:34


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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 14:53
Рейтинг@Mail.ru


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