Configfs使用


Requirements
In order for this to work configfs must be available, so CONFIGFS_FS must be
‘y’ or ‘m’ in .config. As of this writing USB_LIBCOMPOSITE selects CONFIGFS_FS.
CONFIG_FS:
(1)modprobe libcomposite 
(2)mount none $CONFIGFS_HOME -t configfs
(3)創建gadgets
  mkdir $CONFIGS_HOME_/usb_gadget/g1 
  cd $CONFIGFS_HOME/usb_gadget/g1
  echo > idVendor
  echo > idProduct 
  mkdir strings/0x409
  echo > strings/0x409/serialnumber
  echo > strings/0x409/manufacturer 
  echo > strings/0x409/product 
(4)創建配置
	mkdir configs/
	mkdir configs/c.1   // where can be any string which is legal in a filesystem and the
	is the configuration’s number, e.g.
	mkdir configs/c.1/strings/0x409 //Each configuration also needs its strings, so a subdirectory must be created
	for each language, e.g.:
	mkdir configs/c.1/strings/0x409
	echo > configs/c.1/strings/0x409/configuration
	echo 120 > configs/c.1/MaxPower
(5)創建functions 
	mkdir functions/. 
	where corresponds to one of allowed function names and instance name
is an arbitrary string allowed in a filesystem, e.g.:
mkdir functions/ncm.usb0 # usb_f_ncm.ko gets loaded with request_module()
    一些attributes 
(6)functions assonciating the configrations 
	ln -s functions/ncm.usb0 configs/c.1
(7) 使能gadget 
	./configs/c.1/ncm.usb0 -> ../../../../usb_gadget/g1/functions/ncm.usb0
	Such a gadget must be finally enabled so that the USB host can enumerate it.
In order to enable the gadget it must be bound to a UDC (USB Device Controller).
    ls /sys/class/udc/*
	echo s3c-hsotg > UDC
(8) 禁止the gadget 
    echo “” > UDC
(9)清除配置
	rm configfs/c.1/ncm.usb0 
	rmdir configs/./strings/  
	rmdir configs/. 
	rmdir functions/. 
	rmdir strings/  
	rmdir g1  
// 
gadget有它的config組,它有一些屬性(idVendor,idProduct等)和默認子組(配置、函數、字符串)。
寫入屬性會導致信息存儲在適當的位置。在配置、函數和字符串子組中
用戶可以創建子組來表示配置、功能,
以及給定語言中的字符串組。
用戶在配置中創建配置和功能
創建指向函數的符號鏈接。當
gadget的UDC屬性被寫入,這意味着綁定gadget
去UDC。drivers/usb/gadget/configfs.c中的代碼進行迭代
所有的配置,並且在每個配置中迭代所有
函數並綁定它們。這樣整個小工具就被綁定了
小工具的配置組
小工具的默認組(配置、函數、字符串)
將函數與配置相關聯(符號鏈接)
每個USB功能都有自己的想法
已配置,因此定義了特定函數的配置組
在函數實現文件drivers/usb/gadget/f\*.c中。
函數的代碼的編寫方式如下:
usb_get_function_instance(),它反過來調用request_模塊。因此,
只要modprobe正常工作,特定函數的模塊就會自動加載。請注意,反之亦然:
當一個小工具被禁用並被拆除后,模塊仍然被加載。


What:		/config/usb-gadget/gadget/functions/uvc.name/control/header/name
Date:		Dec 2014
KernelVersion:	3.20
Description:	Specific control header descriptors  // control value 的header 







  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM