...особой, контроллерной...
сегодня огребал неиллюзорный дебаг от двух очень занятных вещей:
номер раз
не все архитектуры хранят знаковый бит вместе с числом
номер два
выравнивание данных в памяти это
читать дальше
первое я огреб, когда отладочная сессия грохалась в никому неизвестное исключение (в отладочных регистрах - тишина и покой, как в морге >_< во время вызова библиотечной функции. самое странное - в официальном примере использования использовался указатель на массив из простых char, а на практике иначе как unsigned char * функция жрать не хотела.
а второе получил по собственной глупости, понадеявшись на директиву автоматического выравнивания в памяти, которая как оказалось кладет болт на внутренности структур, в результате данные валялись начиная с нечетного байта - код в сторонней библиотеке пытался оттуда брать w[adr] и охреневал от неровного значения.
struct {
char locked, needserve, current;
char data[FRSIZE];
}
итог
1) не зря Си называют кроссплатформенным ассемблером, сейчас память приходится мапить чуть ли не руками, неизвестно когда я под это чудо напишу нормальное компактное ядро. (да я красноглазый маньяк, но боже упаси портировать туда линукс - я застрелюсь разбираться в ядре, сборки под ARM хватило за глаза.)
тулчейн под Blackfin штука жутко странная и таинственная, сколько же еще головной боли мне он готовит....