Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Странен феномен с едноплатков компютър
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=17532
Страница 1 от 1

Автор:  kalata23 [ Пет Сеп 11, 2020 2:41 am ]
Заглавие:  Странен феномен с едноплатков компютър

На работа се натъкнах на един леко странен "феномен". Колежка се оплаква, че теста на едно изделие не работи с една конкретна платка, но другите платки от серията нямат такъв проблем. Първо си помислих, че има бъг в софтуера на теста. Изделието е един от едноплатковите компютри, които предлагаме, базиран на AllWinner A13.

Тестът е следният:
На една SD карта е записан линукс, в който е вкаран теста на изделието. След като буутне платката и зареди линукса в рама, линуксът трябва да стартира тестовия скрипт ( bash ).
Тестовият скрипт първо отваря един файл, в който са записани конфигурациите на различните изделия и си търси реда със своята конфигурация (на базата на ID на платката). След като я намери парсва конфигурацията, за да знае какво трябва да тества. Да, обаче само на тая платка скриптът казва, че не намира конфигурация с такова ID.
Изключвам платката, вадя SD картата и я слагам на друга платка от същата серия и повтарям процедурата. Там тестът си тръгва без проблем и не реве за ID-то.

Тръгвам да дебъгвам скрипта и установявам, че поради някаква причина линуксът като зареди на въпросната платка не се кефи на фрагменти катo:

Код:
while IFS='' read -r line
do
  ala bala
done <<< $(cat ./CONFIGS.txt)


Обаче на други платки няма проблем. същият скрипт си върви без проблем на същия линукс зареден от същата карта.

Пренаписах кода да стане от рода на:

Код:
    cfgs=$(cat ./CONFIGS.txt)
   
    for line in $(echo "cfgs");
    do
        ala bala
    done


И тука на проблемната платка тая част от кода заспа.
Обаче по-нататък има момент в който параметрите на рама в конфигурацията са описани от рода на:
RAM=524288 KB
съответно, като парсна конфигурацията имам променлива RAM, която е със стойност "524288 KB"
И там извиквам
Код:
echo $RAM  | awk -F " " {'print $1'}
за да остане само "524288", т.е изрязвам всичко след числото. Е да, ама на точно конкретната платка, нещата не се получава.

Решавам да направя експеримент. Отварям си терминал на моя компютър и пиша:
Код:
#echo "ALA BALA PORTOKALA" | awk -F " " {'print $1'}
#ALA


в терминала на платката пиша същата команда и резултатът е:
Код:
#ALA BALA PORTOKALA


И установявам, че всъщност awk се държи различно на тази платка, спрямо другите платки.

И не мога да разбера, как при уж еднакъв хардуер (бомът е еднакъв на всички платки от серията) на който му се зарежда еднакъв софтуер има разлика в резултата при изпълнение на awk?

Открих малка разлика във проблемната платка (от гледна точка на хардуера) спрямо останалите, а именно в RAM чипа:
Изображение

Последният ред букви и цифри, който е до маркера на чипа, на 3-те платки е еднакъв, обаче на проблемната платка е различен.

Оттам стигнах до изводът, че може да има проблем с RAM чипа и поради някаква причина awk да не се държи както трябва на конкретната платка. Все пак целият линукс и тестовият софтуер и всичко стои във рама.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/