在撰寫LED驅動中,已經通過ioremap()函式獲得了對應的LED暫存器的虛擬地址,為什么不能直接控制GPJ2DAT_VA中的值?還要先將buf通過 copy_from_user函式從用戶空間寫到內核空間中,再去判斷wbuf的值再去配置對應的暫存器呢?是因為驅動加載的時候已經進入到了內核中,不會去讀取用戶空間的資料了嗎?下面是部分程式,本人初學驅動,對這方面還不是很了解,請大佬不吝賜教
ret = copy_from_user(wbuf,buf,len);
if(ret!=0)
{
printk("failed to copy from user\n");
return -1;
}
if(wbuf[0]=='0')
{
*GPJ2DAT_VA &=~0xf;
*GPJ2DAT_VA |=0xe;
}
————————————————
著作權宣告:本文為CSDN博主「ZJE_ANDY」的原創文章,遵循 CC 4.0 BY-SA 著作權協議,轉載請附上原文出處鏈接及本宣告。
原文鏈接:https://blog.csdn.net/u014453898/article/details/60144021
uj5u.com熱心網友回復:
用戶空間和內核空間記憶體不能直接訪問,只能通過copy_from_user 、copy_to_user進行互動轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/78987.html
標籤:驅動程序開發區
上一篇:虛擬機打開問題
下一篇:銀河麒麟系統本地源安裝軟體
