Перейти к содержанию
    

Запись в регистры со сдвигом

Добрый день!

 

Как можно писать со сдвигом.

 

Есть dts:

 

myled: myled@43c00000 {
            compatible = "xlnx,myled-1.0";
            reg = <0x43c00000 0x10000>;
        };

 

По сути на ZedBоard это 8 лампочек

Написал драйвер и могу включать лампочки таким образом:

echo 0x1 > /proc/myled

 

Теперь хочу записывать со сдвигом, т.е. например единицу в 3 лампочку.

Т.е. в моем случае я отремапил лампочки в base_addr.

Если делать типа iowrite32(data, base_addr + addr_offset), то не помогает.

 

Вот попробовал:

 

[   25.093368] myled probed at VA 0xe0970000
zynq> echo 0x1 > /proc/myled
[   31.906246] res->start 0x43c00000
[   31.909543] remap_size 0x00010000
[   31.912899] base_addr 0xe0970000
[   31.916054] base_addr + ADDR_OFFSET 0xe0970400

 

В итоге загорается 0 лампочка.

 

Как например зажечь 3 лампочку именно с помощью сдвига? Как рассчитать addr_offset? Ответы типа записать 0x8 в base_addr не принимаются.

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я нигде не ошибся, то

 

iowrite32(data, base_addr + 1)

 

сдвигает на 32 бита!!!

 

P.S. Завтра точно скажу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сдвигает на 32 бита!!!
А, так у вас пробелы в знании Си? Как же вы драйвер написали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...