rcn-ee / repos

repos.rcn-ee.com
40 stars 30 forks source link

Problem with GPIO after upgrade bb-cape-overlays #28

Open xolott opened 7 years ago

xolott commented 7 years ago

Hi,

I had a program on my beaglebone that communicate with another one throught Modbus via RS485 (with a Serial to RS485 chip). Before upgrade the bb-cape-overlays package, it run fine. But soon I upgrade it, the program became unable to communicate. I know that the UART works, but the GPIO that drive the chip doesn't

I manage to reduce the issue to this specific upgrade. My /boot/uEnv.txt file have:


#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=4.4.59-ti-r96
#uuid=
#dtb=

##BeagleBone Black/Green dtb's for v4.1.x (BeagleBone White just works..)

##BeagleBone Black: HDMI (Audio/Video) disabled:
#dtb=am335x-boneblack-emmc-overlay.dtb

##BeagleBone Black: eMMC disabled:
#dtb=am335x-boneblack-hdmi-overlay.dtb

##BeagleBone Black: HDMI Audio/eMMC disabled:
#dtb=am335x-boneblack-nhdmi-overlay.dtb

##BeagleBone Black: HDMI (Audio/Video)/eMMC disabled:
#dtb=am335x-boneblack-overlay.dtb

##BeagleBone Black: wl1835
#dtb=am335x-boneblack-wl1835mod.dtb

##BeagleBone Green: eMMC disabled
#dtb=am335x-bonegreen-overlay.dtb

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
#enable_uboot_overlays=1
###
###Overide capes with eeprom
#uboot_overlay_addr0=/lib/firmware/<file0>.dtbo
#uboot_overlay_addr1=/lib/firmware/<file1>.dtbo
#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=/lib/firmware/<file4>.dtbo
#uboot_overlay_addr5=/lib/firmware/<file5>.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
#dtb_overlay=/lib/firmware/<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###Cape Universal Enable
#enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks...
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

cmdline=coherent_pool=1M net.ifnames=0 quiet cape_universal=enable

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 quiet cape_universal=enable video=HDMI-A-1:1024x768@60e

##Example v3.8.x
#cape_disable=capemgr.disable_partno=
#cape_enable=capemgr.enable_partno=

##Example v4.1.x
#cape_disable=bone_capemgr.disable_partno=
cape_enable=bone_capemgr.enable_partno=cape-universalh

##enable Generic eMMC Flasher:
##make sure, these tools are installed: dosfstools rsync
####cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

#uuid=542b5a58-6fa3-40c2-ae14-12f512c2869e
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh
#uuid=a32bf658-c874-40a4-851d-926615065ada
uuid=46c2a594-8423-44c5-8b3f-373ab153b973
RobertCNelson commented 7 years ago

Hopefully it's still in the log:

cat /var/log/dpkg.log | grep overlays

and can you show:

dmesg | grep bone

Regards,

xolott commented 7 years ago

Hi,

The log dont have info about "overlays". The dmesg output is:

[    0.000000] Kernel command line: console=ttyO0,115200n8 bone_capemgr.enable_partno=cape-universalh root=UUID=46c2a594-8423-44c5-8b3f-373ab153b973 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 quiet cape_universal=enable
[    2.280426] bone_capemgr bone_capemgr: Baseboard: 'A335BNLT,000C,1633BBBG0497'
[    2.280536] bone_capemgr bone_capemgr: compatible-baseboard=ti,beaglebone-black - #slots=4
[    2.320486] bone_capemgr bone_capemgr: slot #0: No cape found
[    2.360480] bone_capemgr bone_capemgr: slot #1: No cape found
[    2.400474] bone_capemgr bone_capemgr: slot #2: No cape found
[    2.440476] bone_capemgr bone_capemgr: slot #3: No cape found
[    2.440505] bone_capemgr bone_capemgr: enabled_partno PARTNO 'cape-universalh' VER 'N/A' PR '0'
[    2.440516] bone_capemgr bone_capemgr: slot #4: override
[    2.440530] bone_capemgr bone_capemgr: Using override eeprom data at slot 4
[    2.440544] bone_capemgr bone_capemgr: slot #4: 'Override Board Name,00A0,Override Manuf,cape-universalh'
[    2.440877] bone_capemgr bone_capemgr: initialized OK.
[    2.858573] bone_capemgr bone_capemgr: slot #4: dtbo 'cape-universalh-00A0.dtbo' loaded; overlay id #0
[   13.735805] systemd[1]: Set hostname to <beaglebone>.
[   23.380544] pinctrl-single 44e10800.pinmux: could not request pin 40 (44e108a0.0) from group nxp_hdmi_bonelt_pins  on device pinctrl-single

I made a patch to fix my problem, doing a 50ms delay after the change on the GPIO output value. If I use another value, less than 50ms, I experiment the same problem.

Regards