Jump to content
Форум по продукции MOXA

mdnaif

Пользователи
  • Posts

    2
  • Joined

  • Last visited

mdnaif's Achievements

Новичок

Новичок (1/5)

0

Reputation

  1. Спасибо, я примерно так и поступил. Думаю что это относится и к другим контроллерам MOXA, где используется подобный Toolchain.
  2. Здравствуйте, Столкнулся с такой вот проблемой при разработке программы для IA-261. Используется самый последный toolchain с сайта моксы. Привожу простенький код: int len = 10; uint16_t ar[len]; uint16_t *ptr16; uint32_t *ptr32; for(int i=0;i<len;i++) ar=i; for(int i=0;i<(len-1);i++){ ptr16 = &ar; ptr32 = (uint32_t*)&ar; printf("ar[%d] = %d, ptr16 = %p, ptr32 = %p, *ptr16 = %d, *ptr32 = %d\n", i, ar, ptr16, ptr32, *ptr16, *ptr32); } Компилирую под Linux Debian в родном gcc (x86), после запуска получаю вот распечатку, здесь видно что все ОК! ar[0] = 0, ptr16 = 0xbfa975bc, ptr32 = 0xbfa975bc, *ptr16 = 0, *ptr32 = 65536 ar[1] = 1, ptr16 = 0xbfa975be, ptr32 = 0xbfa975be, *ptr16 = 1, *ptr32 = 131073 ar[2] = 2, ptr16 = 0xbfa975c0, ptr32 = 0xbfa975c0, *ptr16 = 2, *ptr32 = 196610 ar[3] = 3, ptr16 = 0xbfa975c2, ptr32 = 0xbfa975c2, *ptr16 = 3, *ptr32 = 262147 ar[4] = 4, ptr16 = 0xbfa975c4, ptr32 = 0xbfa975c4, *ptr16 = 4, *ptr32 = 327684 ar[5] = 5, ptr16 = 0xbfa975c6, ptr32 = 0xbfa975c6, *ptr16 = 5, *ptr32 = 393221 ar[6] = 6, ptr16 = 0xbfa975c8, ptr32 = 0xbfa975c8, *ptr16 = 6, *ptr32 = 458758 ar[7] = 7, ptr16 = 0xbfa975ca, ptr32 = 0xbfa975ca, *ptr16 = 7, *ptr32 = 524295 ar[8] = 8, ptr16 = 0xbfa975cc, ptr32 = 0xbfa975cc, *ptr16 = 8, *ptr32 = 589832 Тот же самый код, скомпилированный под arm-linux-gcc и запущенный в IA-261 выдает такие вот чудеса: ar[0] = 0, ptr16 = 0xbed54c8c, ptr32 = 0xbed54c8c, *ptr16 = 0, *ptr32 = 65536 ar[1] = 1, ptr16 = 0xbed54c8e, ptr32 = 0xbed54c8e, *ptr16 = 1, *ptr32 = 1 ar[2] = 2, ptr16 = 0xbed54c90, ptr32 = 0xbed54c90, *ptr16 = 2, *ptr32 = 196610 ar[3] = 3, ptr16 = 0xbed54c92, ptr32 = 0xbed54c92, *ptr16 = 3, *ptr32 = 131075 ar[4] = 4, ptr16 = 0xbed54c94, ptr32 = 0xbed54c94, *ptr16 = 4, *ptr32 = 327684 ar[5] = 5, ptr16 = 0xbed54c96, ptr32 = 0xbed54c96, *ptr16 = 5, *ptr32 = 262149 ar[6] = 6, ptr16 = 0xbed54c98, ptr32 = 0xbed54c98, *ptr16 = 6, *ptr32 = 458758 ar[7] = 7, ptr16 = 0xbed54c9a, ptr32 = 0xbed54c9a, *ptr16 = 7, *ptr32 = 393223 ar[8] = 8, ptr16 = 0xbed54c9c, ptr32 = 0xbed54c9c, *ptr16 = 8, *ptr32 = 589832 Т.е. каждый второй результат *ptr32 неверный. Как решить эту ситуацию, с учетом того, что потребуется далее конвертить еще во float, double.
×
×
  • Create New...