UUU on iMX6DL: UDC device or resource busy?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

UUU on iMX6DL: UDC device or resource busy?

1,369件の閲覧回数
rakesh3
Contributor V

Dear NXP,

 

I am using the imx6d board and using the UUU tool to flash the image into the board but while flashing and using the FBK command while booting i am getting below error while executing the linuxrc file 

 

Start handle command
udc-core: couldn't find an available UDC or it's busy
./linuxrc: line 143: echo: write error: Device or resource busy
uuc /dev/utp
uuc 0.6 [built Nov  7 2019 19:25:07]
UTP: Waiting for /dev/utp to appear
UTP: file/device node /dev/utp already exists

below is my u-boot configuration.

ONFIG_CMD_FASTBOOT=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_USB_GADGET_MANUFACTURER="FSL"
CONFIG_USB_GADGET_VENDOR_NUM=0x0525
CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
CONFIG_CI_UDC=y 
CONFIG_FSL_FASTBOOT=y
CONFIG_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x83800000 # Address need change according ←-
system, generally it can be the same as ${LOADADDR}
CONFIG_FASTBOOT_BUF_SIZE=0x40000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=1
CONFIG_EFI_PARTITION=y
CONFIG_ANDROID_BOOT_IMAGE=y

I have done below kernel configuration .

CONFIG_USB_CONFIGFS_F_FS=y

CONFIG_USB_CONFIGFS_MASS_STORAGE=y

CONFIG_USB_F_MASS_STORAGE=y

CONFIG_USB_F_FS=y

CONFIG_USB_CONFIGFS_F_FS=y

below is my linuxrc file content

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin

mount -t sysfs none /sys
mount -t proc none /proc
mount -t devtmpfs none /dev
mount -t configfs none /sys/kernel/config

modprobe sysflags

# disable turn off display
echo -e "\033[9;0]" > /dev/tty0

#mkdir -p /myconf/config/usb_gadget/g1
#cd /myconf/config/usb_gadget/g1
mkdir -p /sys/kernel/config/usb_gadget/g1
cd /sys/kernel/config/usb_gadget/g1

echo 0x066F > idVendor
echo 0x9BFF > idProduct
mkdir -p strings/0x409
echo 0000000000000000 > strings/0x409/serialnumber
echo "FSL i.MX Board" > strings/0x409/product
mkdir -p configs/c.1
echo 5 > configs/c.1/MaxPower

mkdir os_desc
echo 1 > os_desc/use
echo "MSFT100" > os_desc/qw_sign
echo 0x40 > os_desc/b_vendor_code

mkdir -p functions/ffs.utp
mkdir  /dev/usb-utp
mount -t functionfs utp /dev/usb-utp
ln -s functions/ffs.utp configs/c.1/
ln -s configs/c.1 os_desc

echo /fat > functions/mass_storage.1/lun.0/file

ufb /dev/usb-utp$2/ep0 &

echo run utp at /dev/usb-utp$2/ep0;
while [ ! -e /dev/usb-utp$2/ep1 ]
do
echo "."
sleep 1;
done

echo $1 > UDC  ===> this is the line 143

Please help me on this issue , where i misconfigure the kernel in this .

Attaching the linuxrc file.

Regards,

Rakesh

ラベル(3)
タグ(1)
0 件の賞賛
返信
3 返答(返信)

1,353件の閲覧回数
AldoG
NXP TechSupport
NXP TechSupport

Hello,

Could you share the script or commands that you are using?
Also, which BSP version are you working with?

Best regards,
Aldo.

0 件の賞賛
返信

1,348件の閲覧回数
rakesh3
Contributor V

Hi Aldo, 

I am using the below script as linuxrc .

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin

mount -t sysfs none /sys
mount -t proc none /proc
mount -t devtmpfs none /dev
mount -t configfs none /sys/kernel/config

cmdline=`cat /proc/cmdline`

# disable turn off display
echo -e "\033[9;0]" > /dev/tty0


last=0;

UDC_DIR=/sys/class/udc

function launch_dhcpd() {

touch -f /var/lib/misc/udhcpd.leases
echo start 168.1.1.50 > /conf
echo end 168.1.1.253 >> /conf
echo interface usb$1 >>/conf

ifconfig usb$1 168.1.1.1
udhcpd /conf

}

function contains() {
for i in "${files[@]}"
do
if [ "$i" == "$1" ]; then
return 1;
fi
done
return 0
}

function launch_uuc() {
echo $1 $2
mkdir /sys/kernel/config/usb_gadget/$1
cd /sys/kernel/config/usb_gadget/$1
echo 0x066F > idVendor

if [[ ${cmdline} == *nfsroot* ]]; then
echo 0x9CFF > idProduct
else
echo 0x9BFF > idProduct
fi

mkdir strings/0x409

if [ -e /sys/devices/soc0/soc_uid ]; then
cat /sys/devices/soc0/soc_uid > strings/0x409/serialnumber
else
echo 0000000000000000 > strings/0x409/serialnumber
fi

echo "FSL i.MX Board" > strings/0x409/product
mkdir configs/c.1
echo 5 > configs/c.1/MaxPower

echo ffs.utp$2

echo 1 > os_desc/use
echo "MSFT100" > os_desc/qw_sign
echo 0x40 > os_desc/b_vendor_code

if [[ ${cmdline} == *nfsroot* ]]; then
mkdir functions/ncm.1
ln -s functions/ncm.1 configs/c.1/
# mkdir functions/acm.1
# ln -s functions/acm.1 configs/c.1/
echo $1 > UDC

echo "Start config network"

ifconfig usb$2 up
while [ ! -e /find_one ]
do
if [[ `ifconfig usb$2` == *inet6* ]]; then
break;
fi
sleep 1
done

if [ -e /find_one ]; then
exit 0
fi

touch /find_one

launch_dhcpd $2

remote=""
while [[ "$remote" == "" ]];
do
sleep 2
echo retry get remote ipaddress
ping6 -c2 -I usb$2 ff02::1

remote=`ip -6 neighbor show dev usb$2`
remote=(${remote})
remote=${remote[0]}
done

nfs=${cmdline#*nfsroot=}
nfs=($nfs)
nfs=${nfs[0]}

nfs=${nfs##*:}

echo ${remote} ${nfs}

mount -t nfs [${remote}%usb$2]:${nfsroot}/${nfs} /mnt/

cd /

touch /exit_scan

else
mkdir functions/ffs.utp$2
mkdir /dev/usb-utp$2
mount -t functionfs utp$2 /dev/usb-utp$2
ln -s functions/ffs.utp$2 configs/c.1/
ln -s configs/c.1 os_desc

mkdir functions/mass_storage.1
ln -s functions/mass_storage.1 configs/c.1/
echo /fat > functions/mass_storage.1/lun.0/file

ufb /dev/usb-utp$2/ep0 &

echo run utp at /dev/usb-utp$2/ep0;
while [ ! -e /dev/usb-utp$2/ep1 ]
do
echo "."
sleep 1;
done

echo $1 > UDC

if [ $2 == "0" ]; then
echo uuc /dev/utp
uuc /dev/utp &
else
echo uuc /dev/utp$2
uuc /dev/utp$2 &
fi
fi

return 0;

}

while true; do
if test "$(ls -A "$UDC_DIR")"; then
cd $UDC_DIR
for entry in *
do
if contains $entry; then
files[$last]=$entry;
id=$last;
last=`expr $last + 1`;
echo "Found New UDC: $entry";
launch_uuc $entry $id &
fi

done
sleep 1
else
echo "No udc Available!"
sleep 30
fi

if [ -e /exit_scan ]; then
echo find one active ncm
exec switch_root /mnt /sbin/init
exit 1;
fi

done

echo bye

Here i am using the kernel version 5.10 and u-boot 2021. 

Here error is coming at command "echo $1 > UDC"

Regards,

Rakesh

0 件の賞賛
返信

1,339件の閲覧回数
AldoG
NXP TechSupport
NXP TechSupport

Hello,

thank you for sharing more information, have you tried using the UUU script to flash using Linux kernel?
https://github.com/nxp-imx/mfgtools/wiki/Sample-script#burn-yocto-image-to-emmc-by-linux-kernel

Best regards,
Aldo.

0 件の賞賛
返信