ad
Пользователь
Сообщений: 70
|
|
« : 21 Май, 2015, 22:28:49 » |
|
Делаю дополнительный функционал, обертку к CAN драйверу под процессор ARM Cortex-A8 из BSP (Core of the STKa335 is the TQMa3359 with an ARM). Для узнавания дополнительной информации по данным драйвера есть утилита canctl, которая выдает дополнительную информацию по работе драйвера. К примеру у меня для каждого канала CAN есть 32 mailbox, где, по-умолчанию, 16 RX и 16 TX. Так вот я с помощью этой утилиты могу узнать идентификатор сообщения (MID - message identifier) каждого mailbox, могу узнать приоритеты, прерывания, timestamp и т.п. В том числе я могу узнать ошибки. Например, BUS-off линии CAN. Это вступление. А теперь, собственно, вопрос.
Специально создаю bus-off линии CAN, который, с помощью canctl прекрасно вижу. Значение ошибки - 0x67, когда все хорошо - 0x7. С помощью devctl пытаюсь получить это значение в коде на C. И мне выдается 0x7. Хотя с той же canctl я прекрасно вижу значение 0x67. В коде на драйвер есть функция print_debug_am335x() которая выдает информацию, что и функция canctl. Так вот уже напрямую драйверу вставляю вывод значения кода ошибки, и он пишет некорректное значение, а при выводе с помощью canctl -верное. Есть подозрение, что я, либо забываю выставить какой-то флаг о debug информации или же забываю сделать запись в порт.
Если из моего путаного объяснения, понятно, то сможете ли подсказать, как поступить? Или же где можно посмотреть исходные коды этой утилиты canctl? Хоть как-то можно прояснить ситуацию?
|