Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Всем привет! В keil есть возможность нажав на файл исходников правой кнопкой и выбрав options, для Cortex процов задать регионы для секций Code/Const, Zero Init Data, Other Data по умолчанию стоит default. И я был уверен что это для Code/Const - flash, а для остальных RAM. Так вот поглядел я карту памяти после компиляции и с удивлением обнаружил что достаточно большая часть функций размещены в RAM. Но не все, то есть получается что у кейла есть какая-то стратегия размещения функций? Кто нибудь, что нибудь знает про это? Еще я обнаружил что кеил понаделал thumb код, хотя я думал по умолчанию будет ARM код, и только при желании оптимизации он будет что-то крутить. Или после появления thumb2 стало уже не можно пользоваться ARM кодом? Я понимаю что с точки зрения флеш ускорителей которые читают за 5 тактов проца 128 бит, лучше прочитать ~8 thumb инструкций (примерно потому что в thumb2 они бывают и 32 битные) чем 4 ARM инструкции, для этого преимущество отдано thumb коду? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Всем привет! В keil есть возможность нажав на файл исходников правой кнопкой и выбрав options, для Cortex процов задать регионы для секций Code/Const, Zero Init Data, Other Data по умолчанию стоит default. И я был уверен что это для Code/Const - flash, а для остальных RAM. Так вот поглядел я карту памяти после компиляции и с удивлением обнаружил что достаточно большая часть функций размещены в RAM. Но не все, то есть получается что у кейла есть какая-то стратегия размещения функций? Кто нибудь, что нибудь знает про это? Еще я обнаружил что кеил понаделал thumb код, хотя я думал по умолчанию будет ARM код, и только при желании оптимизации он будет что-то крутить. Или после появления thumb2 стало уже не можно пользоваться ARM кодом? Я понимаю что с точки зрения флеш ускорителей которые читают за 5 тактов проца 128 бит, лучше прочитать ~8 thumb инструкций (примерно потому что в thumb2 они бывают и 32 битные) чем 4 ARM инструкции, для этого преимущество отдано thumb коду? Маэстро, если речь идет о Cortex, то только Thumb-2. Даже если и 32разрядные всё равно Thumb. Никаких ARM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Вот блин... всегда читал строчку из манула The Cortex-M3 offers many new features, including a Thumb-2 instruction set считая что типа второй тумб вместо первого, и считал что это в добавок. И что-то даже не поглядел что АРМ набора вообще больше нету... С этим разобрались, спасибо. А про стратегию функций кейла кто знает где глянуть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба А про стратегию функций кейла кто знает где глянуть? Нету никакой стратегии. С настройками по умолчанию все функции идут в флеш. Ну а если начинаете что-то крутить - это уже на вашей совести. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Нету никакой стратегии. С настройками по умолчанию все функции идут в флеш. Ну а если начинаете что-то крутить - это уже на вашей совести. А если не крутил, а половина функций на файлах которых стоит Code/Const - default оказались в РАМе, то что делать? есть файл у которого ZI о other стоят в рам перенести, но код в дефолте, а функции из него все равно в РАМ попмали... Какая то видать стратегия есть, причем в некоторых файлах часть функций во флеше осталась, а часть в РАМе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба MAP-файл - в студию! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба MAP-файл - в студию! И .scat тоже Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба и тип процессора. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Lpc1768, scart по умолчанию, то есть какой кеил сам генерит. Мар сейчас не могу, но по нему фугкции лежат в раме с 2000... Ажреса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба scart по умолчанию, то есть какой кеил сам генерит. Все равно приложите, иначе концов не найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x00010000 0x00010000 { ; load region size_region ER_IROM1 0x00010000 0x00010000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_IRAM1 0x10000000 0x00008000 { ; RW data .ANY (+RW +ZI) } RW_IRAM2 0x2007D000 0x00007000 { MyMAC.o (+RO +ZI +RW) FIFOModule.o (+RO) .ANY (+RW +ZI) } } вот такое вот... FIFOModule в свойствах стоит запихать его в RAM и он там. GetFIFODataSize 0x2007d5f9 Thumb Code 28 fifomodule.o(.text) GetFIFOBufferSize 0x2007d615 Thumb Code 30 fifomodule.o(.text) GetFIFOBufferEnd 0x2007d633 Thumb Code 16 fifomodule.o(.text) GetFIFODataEnd 0x2007d643 Thumb Code 16 fifomodule.o(.text) а вот для MyMAC - это езернетныймодуль, для него Code/Const стоит в дефолт, только данные и ZI в рам, а он тоже почему то хором попал в РАМ ENET_IRQHandler 0x2007d357 Thumb Code 198 mymac.o(.text) я вижу что в скатере все его секции туда запхались, но вопрос какого лешего? Скатер генерится самим кейлом, то есть я его в папке открыл, в среде к нему даже доступа нет. Вот такие чудеса... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба я вижу что в скатере все его секции туда запхались, но вопрос какого лешего? Скатер генерится самим кейлом, то есть я его в папке открыл, в среде к нему даже доступа нет. Вот такие чудеса... Вот поэтому и не стоит программировать "галочками" - чудес меньше будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Вот поэтому и не стоит программировать "галочками" - чудес меньше будет. Предлагаете читать мануалы? Мануалы придумал трус! :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Предлагаете читать мануалы? Мануалы придумал трус! :yeah: Читать даже не предлагаю, но открыть и сделать Ctrl-F всегда можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 27 апреля, 2015 Опубликовано 27 апреля, 2015 · Жалоба Вот поэтому и не стоит программировать "галочками" - чудес меньше будет. Я только За, но многим удобнее галочками (не один же я работаю на проектом)... Справедливости ради надо заметить что хуже работать не стало :), то есть функциональность сохранилась... Предлагаете читать мануалы? Мануалы придумал трус! Вы тут ни разу неправы. Если у вас среда типа какоса или IAR, то там есть явно представленный скатер файл, который заполняется руками или генерится визардом. А если у вас keil, то править руками скатер файл - это бороться с ветряными мельницами, он же будет его подменять. Да там действительно можно снять кучу галочек и перейти на полностью ручное управление, но изначально в галочной системе есть какой-то workflow который можно, а современных реалиях и нужно использовать, потому что сокращает время. Так что наезд в данном случае не принимается, мануалы тут не причем. Читать даже не предлагаю, но открыть и сделать Ctrl-F всегда можно. вы тоже не правы, потом что в мануале то как раз про галочки расписано как должно быть, а по факту получается иначе. Может в кейле есть еще какие-то способы дать указания разметке, про которые я не знаю.... Но великие читатели мануалов могут снизайти и указать ничтожному где про это написано... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться