ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
468036
Mikla (27.11.2013 21:29, просмотров: 2886) VL
keil 4.53 vs keil 4.72a перешел с одного на другой, в итоге попал и придется откатываться назад. Вот пример две строчки кода unsigned char *from;//указатель на входящее сообщение unsigned long data; ... data = *(unsigned long*)from; from += 4; ... старый компилит как LDR R11,[R4],#0x04 при оптимизации O3 новый LDM R4!,{R0} при оптимизации с O1 по O3 без оптимизации O0 использует LDR/STR, но использовать его без оптимизации, когда код в 1,5 раза больше смылса нет. на галочку Split load and store multiple реагирует варнингом типа splitting LDM/STM has no benefits и все оставляет как есть. поскольку longи во входящем сообщении лежат как угодно и не выравнены на границу в 4 байта, в новом кейле получаем hard fault. Просматривать, выискивать и исправлять под новый компилятор тучу исходников нет никакого желания. из новой среды в старую передрал поддержку новых stmов, обновил прошивку Ulink. Если у кого есть лицензионный keil с еще не истекшим сроком поддержки, может спросите у русской поддержки (Сергей Копытин) что за нафиг?