Beagle Bone Black swapped I2C busses - beagleboneblack

We are developing extension board for BBB. It contains I2C RTC clock chip MCP79412. Chip is connected to I2C1 (pins P9.17,P9.18). I can't see any device on i2c-1, but I found chip EEPROM on i2c-2. When I connect it to I2C2 (P9.19,P9.20) I can access eeprom using capemgr loaded driver on bus i2c-1.
It looks like something swaped busses 1 and 2. I'm using Arch Linux with Kernel 3.8.13-35.
My uEnv.txt
optargs=loglevel=3 coherent_pool=1M capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4,BB-I2C1,BB-ADC
What could cause this strange behavior?

Related

Does loadable kernel module(LVM) also need device tree?

Recently, I beginning research how to write SPI ADC driver(ADS7950) on the raspberry pi 4 with Linux.
I read this book which tell me I can get good flexibility with LKM driver.
I know every device should be initialized with device tree when Linux boot.
Device tree pass the features into device driver such as clock frequency and device address in memory.
So if I just make LKM module which means driver will initialize after boot.
Should I also make(append) device for LKM drive?

Coral Dev Board - Startup Blocked if Display Activated

I have a Coral Dev board acquired 4/19 and activated 4/22. I purchased a ViewSonic VA1655 15.6 Inch 1080p Portable IPS Monitor with Mobile Ergonomics, USB-C and Mini HDMI for Home and Office which I power from the USB port on my 120v household power strip. (I also pimped out my Coral board with a Samsung Electronics (MZ-V8V500B/AM) 980 SSD 500GB - M.2 NVMe Interface Internal Solid State Drive with V-NAND Technology inside a SABRENT USB 3.2 Type-C Tool-Free Enclosure for M.2 PCIe NVMe and SATA SSDs (EC-SNVE) for some Gentoo chroot experiments ).
The problem I face is that if I have a crash or power down, when I try to restart by unplugging and plugging back in Coral's transformer, boot-up will not start unless I also power down the ViewSonic monitor. I believe the monitor's being "on" probably sets a voltage on the Coral board which interferes with the logic of detecting power off/power on for the reboot. Maybe I'm wrong in theory, but I would like to be able to reboot/start up Coral by plugging/unplugging the Coral's transformer and not to also have to power off the ViewSonic and then power the ViewSonic after Coral has started. Is there a configuration setting that can accomplish this?

Get coordinates from USB 2.0 TouchScreen Monitor under ubuntu.

I have a Touchscreen Panel working under Ubuntu and I need to find out where this device is writing the coordinates when touching the panel.
Buffer? DMA REGISTER? USB REGISTER? Where can I get this information? How to get this information unter linux consol? How getting the physical memory location / buffer adress ?! ...
Anybody has an idea?
in general you can get the coordinates using the evtest tool, that reads input events i.e. in /dev/input/event see How to get Coordinates of Touchscreen Rawdata using Linux <- very good answer
Despite this other ways to get the data depend on your touchscreen (reading/writing /dev/ttySx ,...). Touch screens are in general implemented as USB HID devices or emulating a serial connection
(https://wiki.ubuntu.com/Touchscreen)
Checking for touchscreen connectivity
When encountering a new device, the first order of business is to
determine how the touchscreen is connected to your computer. If the
touchscreen produces no events out of the box, check to see if it's an
USB device or not:
lsusb
USB connection
Check the output for any reference to a touchscreen. If your
touchscreen has an USB interface, and it isn't working, then you may
need to blacklist the usbtouchscreen driver for it to work:
sudo modprobe -r usbtouchscreen
If your touchscreen begins to produce events, then you can permanently
blacklist the usbtouchscreen driver:
echo "blacklist usbtouchscreen" | sudo tee -a
/etc/modprobe.d/blacklist.conf
Some touchscreens might already have good or perfect calibrations,
otherwise you'll need to continue to the calibration section.
Serial connection
If there is no reference to a touchscreen device in your lsusb output,
the connection is most likely through one of your serial ports. The
actual IRQ mapping varies between manufacturers. In the case of
Itronix devices, the default is /dev/ttyS3. A simple way to check for
connections is to check each one for events:
screen /dev/ttyS0
Touch anywhere on your screen to check for any character output. If
nothing happens, quit screen by pressing Ctrl+A and then the \ key
to quit. Continue with /dev/ttyS1, etc. until you get a response. Once
you've determined the device, we can try a few different drivers. In
the case of Itronix (and most other devices using the Touchkit
driver), the correct driver is touchit213.
sudo inputattach --touchit213 /dev/ttyS3
Will work for most touchkit screens. The calibration or one or more
axes may be swapped, but if the calibration is approximate then it's
probably the correct driver. Press Ctrl+C to try a new mode.
inputattach supports any of the following modes, which includes
external touchscreens which may attach through a physical serial port:
--h3600ts -ipaq Ipaq h3600 touchscreend
--elotouch -elo ELO touchscreen, 10-byte mode
--elo4002 -elo6b ELO touchscreen, 6-byte mode
--elo271-140 -elo4b ELO touchscreen, 4-byte mode
--elo261-280 -elo3b ELO Touchscreen, 3-byte mode
--mtouch -mtouch MicroTouch (3M) touchscreen
--touchit213 -t213 Sahara Touch-iT213 Tablet PC
--touchright -tr Touchright serial touchscreen
--touchwin -tw Touchwindow serial touchscreen
--penmount -pm Penmount touchscreen
--fujitsu -fjt Fujitsu serial touchscreen
If your device is built into a laptop, you'll have the best luck with
the mtouch, touchright, touchwin, or touchit213 drivers. Likewise,
non-Elo external touchscreens will most likely use touchit213. If your
device is a tablet with stylus-only input, fujitsu is a popular maker
of embedded tablet devices.
To attach the touchscreen at startup, edit your /etc/rc.local to look
like the following:
/usr/bin/inputattach --daemon --always -t213 /dev/ttyS3 exit 0
Replace -t213 with your appropriate driver and /dev/ttyS3 with the
correct device.
Again, don't worry if the calibration isn't perfect, or if an axis is
inverted or reversed - this will be addressed in the calibration
section.
https://wiki.ubuntu.com/Touchscreen

Is there anyone who has ever implemented Ethernet MDIO(Clause 22 or 45) function through GPIO driver?

I'm using TI DSP Keystone II device for 10G Ethernet service.
The 10G interface is connected to Marvell 10G PHY device.
What I'm going to try is to use GPIO on the DSP device to access 10G PHY clause 45 management port, instead of using 10G MDIO on DSP.
Is there anyone who tried to do this? or even just implemented 1G/10G MDIO function in software?

how to connect nexys2 FPGA with camera? Driver issue

My project is to capture images and process them to move a wheelchair accordingly. I am using Nexys2 FPGA board for this purpose. Nexys2 has a usb port and the camera is also a usb camera. but i dont have the drivers in verilog which will make nexys2 and the camera communicate with each other. Please help me ill be very grateful.
Well, if you manage to write a driver for a USB camera in VErilog, you can sell that for a lot of money :)
Well, sarcasm aside, there is NO WAY you can access a USB camera in Verilog, unless you have a USB host implemented in your FPGA and have a CPU controlling it and have a SW driver for that camera.
There are alternatives to this, you can buy a camera which has an FPGA "friendly" connector like this one:
5 Mega Pixel Digital Camera Package
Which comes with the Verilog code that you can use in your project.
Sadly, the USB port on the Digilent Nexus 2 board does not have host capabilities, it can only act as a USB slave. The USB connection on the board is used for powering the board and configuring the FPGA and other onboard peripherals.
The newer Nexus 3 board has a second USB port however it has the same issue in that it can only act in slave mode. Also due to the configuration can only be used for mouse and keyboard input.

Resources