Сайт | Скачать | Видео | Wiki

Автор Тема: [ARM] Работа с м-контроллерами ARM. Настройка среды (Eclipse+ZylinCDT+GCC+GDB+OpenOCD)  (Прочитано 9744 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dim-kut

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1014
  • Репутация: +41/-0
Написал инструкцию, как установить и настроить софт для работы с микроконтроллерами ARM
  Я работаю с JTAG-адаптером wiggler на LPT и микроконтроллером at91sam7s256.
  Для других устройств настройка будет отличаться в деталях.
 
1. Устанавливаем Java Runtime Environment (JRE) . Я подключил файл jre-1.6.0.11_301.sfs
    Проверяем: java -version. Должны увидеть версию.

2. Устанавливаем GNU ARM toolchain.
    Я брал здесь: http://embdev.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X
    Распаковываем, каталог arm переносим в /usr/local/, добавляем путь /usr/local/arm/bin в PATH
    Проверяем: arm-elf-gcc --version. Должны увидеть версию.
   
3. Устанавливаем OpenOCD.
    Качаем openocd-0.1.0.tar.bz2. Распаковываем, компилируем при подключенном devx-lks-cmake_301.sfs.
    ./configure --enable-parport ( для wiggler-а )
    make
    make install
    Создать работающий pet у меня пока не получается, поэтому пока так.
   
4. Устанавливаем Eclipse ( Gallileo ).
    На сайте eclipse.org выбираем Eclipse IDE for C/C++ Developers и качаем 32-битный билд.
    Распаковываем в произвольный каталог ( у меня - /opt ). Запускаем. Радуемся.
    ( С EasyEclipse связываться не советую, версии старые, одни неприятности. )
   
5. Настраиваем Eclipse.
5.1 Устанавливаем Zylin CDT plugin.
      Идем в Help-->Install New Software, жмем Add,
      набираем Name: zylincdt и Location: http://opensource.zylin.com/zylincdt
      Жмем Ok, Next, Finish. Это понятно.
5.2 Создаем новый проект, импортируем пример.
      Создаем новый C-проект,
      выбираем Project type: Makefile project/Empty Project, Toolchains: Other Toolchain
      Снимаем галку с Project-->Build Automatically
      Идем в Project-->Properties:
         В Builders снимаем галку с Scanner Configuration Builder
         В Settings выбираем GNU Elf Parser
      Идем в File / Import... и выбираем File System и указываем ему на распакованый в стороне пример.
      Отмечаем галками все или не все файлы. Жмем Finish.
      Чистим проект: Project-->Clean. Галку Start a build immediately снимаем.

    Компилируем проект Project-->Build Project
    Получаем или не получаем .hex, .bin, .elf, или .out файлы, в зависимости от содержимого makefile.
    .bin нам нужен для заливки в контроллер, .elf нужен для отладки.
    ( Наличие .elf-файла еще не гарантирует нормальную отладку, на примере с YAGARTO отладка работает,
      на другом - ошибка. Видимо дело в опциях makefile. )

5.3 Настраиваем дебаг.
    Переключаем оболочку на режим дебага.
    Тыкаем в черный треугольник на кнопке с зеленым жуком. Выбираем Debug Configurations
    Делаем новую конфигурацию для Zylin Embedded debug ( Native ). Настраиваем ее:
    Project - текущий, C/C++ Application - xxxx.elf С другими файлами дебаг похоже не работает.
    GDB debugger: /usr/local/arm/bin/arm-elf-gdb, GDB command line: пусто. Никакой .gdbinit я не гружу.
    На вкладке Commands в поле Initialize commands у меня прописано:
       target remote localhost:4444
       load   
       break main
       continue   
   Жмем Apply, потом Debug.

   Шаги 5.2 и 5.3 нужно повторять для каждого нового проекта.

   Перед пунктом 6 лучше сбросить микроконтроллер.

6. Запускаем OpenOCD: openocd -f конфигфайл
   Засада в том, что в openocd минимум дважды менялся "язык" этих конфигфайлов и чужие конфиги
   из интернета обычно не работают. Лучший путь - брать родные конфиги из каталогов interface
   и target и из них лепить один и правильно прописать порты. Мой конфиг в аттаче.
   Модуль параллельного порта я НЕ запускаю ( modprobe parport_pc ), поскольку в конфиге
   openocd прописываю адрес 0x378. Инструкции рекомендуют переключить параллельный порт в EPP
   режим. Я не делал, у меня и на ECP работает нормально.

   Для удобства можно запуск openOCD прописать прямо в Eclipse - в External Tools
 
   После пункта 6 начинает работать внутричиповая отладка.

7. Прошивка флеш-памяти микроконтроллера.
   Открываем новое окно консоли ( первое осталось занятым openocd ) и набираем:
   telnet 127.0.0.1 3333
   halt
   flash probe 0
   Здесь я получил такую строчку : flash ‘at91sam7’ found at 0x00100000.
   Работает.

   Еще команды:
   flash info 0 - информация о чипе
   flash protect 0 0 15 off - снятие защиты на запись
   at91sam7 gpnvm 0 1 set - разрешение загрузки из flash/sram
   flash erase_sector 0 0 15 - стирание flash
   help - хелп
   flash erase_check 0 - проверка чистоты флеша
   flash write_bank 0 test.bin 0x0 - запись файла

   Чтобы каждый раз не набивать команды я выполняю скрипт upload.scr:
   script upload.scr

   Содержимое скрипта:
   halt
   wait_halt
   flash probe 0
   flash erase_sector 0 0 15
   flash write_bank 0 /opt/main.bin 0x0

   Теперь моя платка весело моргает светодиодами  :)


Версии используемого софта:
   PuppyRus Jeans 1.3.0
   Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
   arm-elf-gcc (GCC) 4.1.0
   GNU gdb 6.4
   Eclipse IDE for C/C++ Developers. Build id: 20090619-0625
   Open On-Chip Debugger 0.1.0 (2009-08-14-13:38) Release

Полезные страницы:
   http://www.yagarto.de/howto/yagarto2/index.html
   http://www.yagarto.de/howto/yagarto1/index.html
   http://www.yagarto.de/howto/openocd/index.html
   http://www2.pt.tu-clausthal.de/~alexp/arm/index.html



Engineering is the art of making what you want from things you can get.
Мои модули для PRA64fat лежат здесь. Под 64light могут не заработать.
Мой блог - dim-kut.livejournal.com Фонд, которому я доверяю - pomogi.org