VladislavS 46 April 7 Posted April 7 · Report post 4 минуты назад, jcxz сказал: Не использую. Ну это ССЗБ. 3 минуты назад, Vasily_ сказал: Работодатель жмот ? Солидная фирма возьмёт в аренду дырокол. 9 минут назад, jcxz сказал: и ни одного оригинального. Используйте "for evaluation purposes", Segger не возражает. Quote Share this post Link to post Share on other sites More sharing options...
Vasily_ 121 April 7 Posted April 7 · Report post 15 минут назад, VladislavS сказал: Солидная фирма возьмёт в аренду дырокол. Латвийские работодатели они такие! Quote Share this post Link to post Share on other sites More sharing options...
x893 78 April 7 Posted April 7 · Report post 1 hour ago, jcxz said: Ну да... и ни одного оригинального. Я не видел оригинального в жизни. Все самодельные и ничего - Озоню когда надо. Дело в желании. Quote Share this post Link to post Share on other sites More sharing options...
girts 27 April 7 Posted April 7 · Report post 1 hour ago, Vasily_ said: Латвийские работодатели они такие! Скажем так.... Деньги считать умеют все. В большом корпоративе, конечно, вопросов меньше. Только где они, а где мы. А для гусара домоработника с мотором - лицензия на IAR за 3к - как кроту якорь, туда же и подписка на Altium. Тут ещё ладно, GCC... А ведь по идее может и потребоватся какой нибудь "индустриально сертифицированный комптлятор", чтоб совсем кошерно. Quote Share this post Link to post Share on other sites More sharing options...
Vasily_ 121 April 7 Posted April 7 · Report post 1 минуту назад, girts сказал: А для гусара домоработника с мотором - лицензия на IAR за 3к - как кроту якорь, туда же и подписка на Altium. Так про гусаров то тут речи и нет, речь про официально и бесплатно! Quote Share this post Link to post Share on other sites More sharing options...
jcxz 342 April 7 Posted April 7 · Report post 2 часа назад, Vasily_ сказал: Латвийские работодатели они такие! Российские - такие же. На последнем рос. месте работы был у нас ЕДИНСТВЕННЫЙ купленный во времена царя Гороха оригинальный J-Link. Ещё тот - желтенький. (кто помнит такие? ) Потом, во времена оны, его успешно спалили, и далее - только клоны. 2 часа назад, Vasily_ сказал: Работодатель жмот ? 😂 Вопрос обычно ставится так: Можно купить либо ОДИН, но ОРИГИНАЛЬНЫЙ, и простой (без всяких Ethernet, Ultra и т.п.); либо НЕСКОЛЬКО, но КЛОНОВ, но зато = Ultra, Ethernet, гальваническая развязка и прочие плюшки. Что выберут программисты тут? Думаю - вопрос риторический. 1 час назад, x893 сказал: Я не видел оригинального в жизни. Все самодельные и ничего - Озоню когда надо. Дело в желании. Видимо вы никогда не работали в серьёзной конторе, где всё ПО должно быть легальным. Где собственники - иностранные инвесторы. Желать можно дома. У нас тут даже некоторые библиотеки запрещают использовать. Которые даже вроде freeware, но с не совсем подходящими условиями лицензий. Quote Share this post Link to post Share on other sites More sharing options...
girts 27 April 7 Posted April 7 · Report post 1 minute ago, jcxz said: Вопрос обычно ставится так: Можно купить либо ОДИН, но ОРИГИНАЛЬНЫЙ, и простой (без всяких Ethernet, Ultra и т.п.); либо НЕСКОЛЬКО клонов, но зато = Ultra, Ethernet, гальваническая развязка и прочие плюшки. Что выберут программисты тут? Думаю - вопрос риторический. Реторический или нет, хз.... Если на кантору, то НЕСКОЛЬКО клонов и ОДИН оригинал. И вся кантора работает клонами, при необходимости прикрываясь оригиналом. Как в своё время с Widows - оффициальная лицензия только на фронтенде, тоесть, у секретарши. Ибо если придут проверять, то это первый комп, которого увидят. Quote Share this post Link to post Share on other sites More sharing options...
x893 78 April 7 Posted April 7 · Report post 13 minutes ago, jcxz said: Видимо вы никогда не работали в серьёзной конторе, где всё ПО должно быть легальным. Серьёзность конторы определяется не легальностью ПО. Хотя тут каждый сам решает. Проблемы решать или лицензиями махать. 1 Quote Share this post Link to post Share on other sites More sharing options...
jcxz 342 April 7 Posted April 7 · Report post Здесь обсуждение исходной темы сразу свернуло с исходного вопроса в русло: "Чем другим можно компилить и отлаживать." А вот Всемирный Разум сразу среди вариантов решения предложил самостоятельно написать конвертор: "Или конвертировать DWARF -> IAR формат, но таких инструментов нет в свободном доступе." Или выдвигал предложения на тему: "Как заставить IAR работать с DWARF форматом отладочной инфы". Не уходил в оффтопик.... 4 часа назад, VladislavS сказал: IAR давно поддерживает __attribute__((packed)) __attribute__((aligned(16))) __attribute__((section(".init"))). Более того - прогресс идёт и в GCC: в GCC уже ввели IAR-style атрибут __packed, а в последней версии (v14.2) - и недостающие intrinsic-и появились: __builtin_arm_rbit(), __builtin_clz(), ... Quote Share this post Link to post Share on other sites More sharing options...
dxp 140 April 7 Posted April 7 · Report post 3 часа назад, jcxz сказал: Может кто сразу подскажет - как его улучшить? Листинги можно изготавливать с помощью objdump: objdump -dCS <file.o> Получается нечто вроде: Спойлер build/prj/vm1765/ps/cam/obj/drc.o: file format elf32-littlearm Disassembly of section .text._Z8drc_fun2tPt: 00000000 <drc_fun2(unsigned short, unsigned short*)>: return RemoteControlMessageJob::RC_OK; } //--------------------------------------------------------------------------- RemoteControlMessageJob::ResponseCode drc_fun2(const uint16_t count, uint16_t *params) { 0: e92d4070 push {r4, r5, r6, lr} 4: e1a05000 mov r5, r0 print("drc fun2: count %d\n", count); 8: e3000000 movw r0, #0 { c: e1a04001 mov r4, r1 print("drc fun2: count %d\n", count); 10: e3400000 movt r0, #0 14: e1a01005 mov r1, r5 18: ebfffffe bl 0 <print(char const*, ...)> if(count != 2) 1c: e3550002 cmp r5, #2 20: 1a000009 bne 4c <drc_fun2(unsigned short, unsigned short*)+0x4c> { return RemoteControlMessageJob::RC_INCORRECT_PARAMETER_COUNT; } if(params[0] > 10) 24: e1d430b0 ldrh r3, [r4] 28: e353000a cmp r3, #10 2c: 8a000008 bhi 54 <drc_fun2(unsigned short, unsigned short*)+0x54> { return RemoteControlMessageJob::RC_INVALID_PARAMETER_VALUE; } params[2] = params[1]; 30: e1d420b2 ldrh r2, [r4, #2] params[1] = params[0]; params[0] = (2 << 8) | 255; // {data_count = 2, return_code = 255} 34: e3e01cfd mvn r1, #64768 @ 0xfd00 return RemoteControlMessageJob::RC_OK; 38: e3a00000 mov r0, #0 params[1] = params[0]; 3c: e1c430b2 strh r3, [r4, #2] params[0] = (2 << 8) | 255; // {data_count = 2, return_code = 255} 40: e1c410b0 strh r1, [r4] params[2] = params[1]; 44: e1c420b4 strh r2, [r4, #4] return RemoteControlMessageJob::RC_OK; 48: e8bd8070 pop {r4, r5, r6, pc} return RemoteControlMessageJob::RC_INCORRECT_PARAMETER_COUNT; 4c: e3a00005 mov r0, #5 50: e8bd8070 pop {r4, r5, r6, pc} return RemoteControlMessageJob::RC_INVALID_PARAMETER_VALUE; 54: e3a00006 mov r0, #6 } 58: e8bd8070 pop {r4, r5, r6, pc} Читабельность, конечно, так себе, но что-то понять можно. Самый большой недостаток -- на высоких уровнях оптимизации привязка исходного кода к кодогенерации не всегда верная, ориентироваться на неё можно только условно. В целом она всё равно помогает навигации. Возможно, это из-за сложного CPU с длинным конвейером (здесь Cortex-A9) -- компилятор перемежает инструкции, чтобы избежать простоев конвейера. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 342 April 7 Posted April 7 · Report post 8 минут назад, dxp сказал: Читабельность, конечно, так себе, но что-то понять можно. Самый большой недостаток -- на высоких уровнях оптимизации привязка исходного кода к кодогенерации не всегда верная, ориентироваться на неё можно только условно. Это понятно. Уже нашёл, что добавление ключа '-g' в строку запуска GCC добавляет строки исходного кода в генерируемый листинг. Привязка конечно условная. 44 минуты назад, jcxz сказал: Более того - прогресс идёт и в GCC: в GCC уже ввели IAR-style атрибут __packed Правда ввели через одно место - IAR требует: "__packed struct ЛяЛя {", а GCC = "struct __packed ЛяЛя {". И как быть???? Пришлось изобрести: #if defined(__ICCARM__) //IAR Compiler #define _packed __attribute__((packed)) #elif defined(__GNUC__) //GNU Compiler #define _packed __attribute__((packed)) #endif ... struct _packed ЛяЛя { ... }; Красивее не придумывается... Quote Share this post Link to post Share on other sites More sharing options...
VladislavS 46 April 7 Posted April 7 · Report post 51 минуту назад, jcxz сказал: И как быть???? struct __attribute__((packed)) ЛяЛя { }; Quote Share this post Link to post Share on other sites More sharing options...
Arlleex 311 April 7 Posted April 7 · Report post Надо просто нормально писать атрибутами сразу, потому что их там несколько десятков, а не только packed. Quote Share this post Link to post Share on other sites More sharing options...
jcxz 342 April 7 Posted April 7 · Report post 18 минут назад, Arlleex сказал: Надо просто нормально писать атрибутами сразу, потому что их там несколько десятков, а не только packed. Как же это делать, если ранее IAR не поддерживал эти __attribute__((...))? Да и не было ранее этого требования - сборки под GCC. Пришли новые рукамиводители, со своим видением - и появилось. А как заранее развидеть - кто завтра ещё придёт и какие правила придумает? Может скажет "компилить только инструментами европейского производства!" И опять все на IAR побежим. А в РФ - вот скажут вам завтра, что "компилить нужно только отечественными инструментами!" Так как "Кейл - иноагенты писали на деньги госдепа". Думаете - не будет такого? Quote Share this post Link to post Share on other sites More sharing options...
VladislavS 46 April 7 Posted April 7 · Report post Quote Share this post Link to post Share on other sites More sharing options...