Pitonbl4 0 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба Добрый день! Как можно писать со сдвигом. Есть 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 не принимаются. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pitonbl4 0 6 сентября, 2018 Опубликовано 6 сентября, 2018 · Жалоба Если я нигде не ошибся, то iowrite32(data, base_addr + 1) сдвигает на 32 бита!!! P.S. Завтра точно скажу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 7 сентября, 2018 Опубликовано 7 сентября, 2018 · Жалоба сдвигает на 32 бита!!!А, так у вас пробелы в знании Си? Как же вы драйвер написали? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться