Starter kit for bare-metal programming for Beaglebone - beagleboneblack

i plan to try some bare-metal TCP/IP stuff on a beaglebone. There is TI StarterWare containing the TCP/IP stack which is good. However, to flash my program to BB, I need some JTAG adaptor and software. Which one should I buy/use there so many different JTAG debuggers, are they all equivalent?

One preliminary remark:
You don't really need a JTAG probe for downloading/running/flashing your program: you can load and execute using u-boot loadb or load commands from the serial console, provided that your beaglebone does still have u-boot installed - The procedure for connecting a USB-to-TTL adapter is described here. I would strongly suggest to buy the exact adapter featured in the article above on e-bay if you don't have one.
In addition to the u-boot/serial adapter, you can to connect your beaglebone to your local network, and download your application using u-boot tftp commands. You can buy a USB to Ethernet adapter for a couple of dollars, plug it into your PC, then install a TFTP server, tftp32 (Windows) or tftpd-hpa (Linux). You will then be able to connect directly your development PC to your beaglebone.
In the case your beaglebone would not have a working u-boot installed anymore, you still can re-install it from the serial port:
This can be done by connecting both P8.44/SYS_BOOT3/LCD_DATA3/GPIO2_9 and P8.43/SYS_BOOT2/LCD_DATA2/GPIO2_8 to the ground (two of P9.43/P9.44/P9.45/P9.46) using two 4.7 k ohm resistors, powering the beaglebone with an external 5V power supply (not by USB), and power-cycling the beaglebone - power-cycling IS required, performing a 'reset' is not enough for the new SYSBOOT configuration to be taken into account.
You can then download u-boot from your PC using Teraterm: u-boot-spl-.bin should be downloaded using x-modem, and u-boot.bin using y-modem, as described in the 'Boot over UART' section of this TI wiki article.
This being said, a JTAG probe is always useful when debugging a bare metal application or the Linux kernel: as a hobbyist, I am using the EDU version of Segger J-link with my beaglebone (around USD 63). If you need it for commercial use, the price tag is around USD 400 I guess.
You will also need to have the TI 20 pin header soldered on your beaglebone - see section "Optional JTAG" of the beaglebone documentation.
I bought the Samtec FTR-110-03-G-D-06 connector, and am perfectly happy with it.
Please note the CircuitCo used to sell Beaglebone Blacks with the connector already soldered.
Finally, you will need an adapter to connect the TI 20 Pin connector to the standard 20 pin ARM JTAG connector used by the J-link.
To my knowledge, they are at least two solutions:
The J-Link TI-CTI-20 Adapter from Segger, which was my choice,
The BeagleBone Black JTAG Adapter Kit from Tican Tools.
The J-Link has software support for both Windows and Linux. I have been using it with the Starterware and my beaglebone black on both Windows and Linux systems with success to this day. It has been working fine with a bunch of different Cortex-M0+, M0, M3, and M4 as well.
Unfortunately, I don't have been experimenting with other JTAG probes...

From what I have read, the JTAG emulator that allows you to use the free license to Code Composer Studio with the Beaglebone Black is the XDS100v2. Here is a link to it:
https://store.ti.com/TMDSEMU100V2U-20T-XDS100v2-JTAG-Emulator-20-pin-compact-TI-connector-P1848.aspx
I just bought one myself to use with the BBB. I have not tried it yet though.

You don't necessarily need JTAG to test them. You can build it and put it in a path in your filesystem, then during boot, ask your bootloader i.e. u-boot to load it and then jump there and execute it.

Related

Using Coral Dev Board as wifi router

Im doing a project with IP cameras and Coral, so I'd like to know is it possible to create a wifi hotspot using only coral. I've tried couple ways, but they ended up to be not working
Coral Dev board uses "Murata LBEE5U91CQ module". And this chip does support dual mode network topology (AP + STA). Please see the details at : https://wireless.murata.com/type-1cq.html.
Driver is nl80211 and AP is supported so standard Linux tools can be used. Generally this is accomplished with hostapd, you can see an example configuration here: https://nims11.wordpress.com/2012/04/27/hostapd-the-linux-way-to-create-virtual-wifi-access-point/. That being said, hostapd lets you configure many more modes that will enable. The maximum data rate will vary wildly based on your configuration, but the device can support 802.11n with two antennas so up to 300 Mbps may be possible. Run 'iw list' for more info on capabilities.
Note: both hostapd and iw need to be installed via apt.

Is it possible to access a Chromebook via ssh through USB?

My employer has asked me to prepare for testing several thousand Chromebooks (mix of models/manufacturers) to refurb/flip. This may be a recurring thing.
Most or all of these will be old enough that CCD will not be available. I'd like to connect a widget such as a Raspberry Pi to the USB and have it automate testing as much as possible.
I know I can use keyboard emulation to inject commands, but I'd like to get a crosh session running over USB so that I can read info from the DUT besides just controlling it.
Google shows bazillions of returns about using a Chromebook as an ssh terminal but what I'm looking for is the opposite. I'm prepared for the answer to be a simple "no" but I'm concerned because I can't find that anyone else has asked this question. I don't think I'm that creative, so I suspect my Goog-fu is weak.
The answer appears to be "no". However I solved it another way; using "gadget mode" I have a Raspberry Pi ZW enumerate as a keyboard and a serial port. I put the Chromebook into Developer mode, open a developer shell with ctrl/alt/F2, or on a PC/linux or Mac system open a terminal window and type "sudo su" (these have to be done manually). Then I have the RPi issue this bash command to identify the serial port "in the blind":
SERPORT=/dev/serial/by-id/$(ls /dev/serial/by-id) # Chromebook or PC/linux
(or)
SERPORT=$(ls /dev/cu.usbmodem*) # Mac
Now I can have the RPi inject commands via the keyboard, put ">$SERPORT" on the end of each command, and the output comes in the RPi gadget serial port. The RPi then packages the data and forwards it over WiFi to our CRM. It's working nicely for Chromebooks, PCs booted into linux, Mac desktops and Macbooks.
Edit:
The company I work for has actually turned this into a product and so I'm not sure how much detail I should share, but...
I learned my way around gadget mode on the RPi from this link. There are examples for setting up a keyboard and a serial port. Using the templates in that link, I made a device called /dev/hidg0 which emits keyboard scancodes from the RPi to the Chromebook. I also made a device called /dev/ttyGS0 which the Chromebook sees as a serial port.
So I send keystrokes with some python like:
with open("/dev/hidg0","bw") as hid:
hid.write(blah)
and then have the Chromebook send text to the serial port, which I then read by looking at /dev/ttyGS0
Hopefully this will be enough to get you started. I found the isticktoit link very helpful.

Working with PiCAN + raspberry pi 3 running windows IoT Core

I want to connect the PiCAN with my raspberry pi3 running windows IoT Core. I think I need a universal driver for the mcp2515 to work with the windows in Pi. I already tried using the instructions given in https://developer.microsoft.com/en-us/windows/iot/docs/driverdeployment to deploy the driver given in https://github.com/AustinWise/Mcp2515Can . But I got stuck in the instructions. I hope someone has already done this and maybe can help me with it? Did anyone successfully use this CAN board with Raspberry Pi (windows iot core)?
Thank you :)
Is a driver required in the first place?
Short answer is No.
Although a device driver is preferred, such work is not officially or community done yet.
The benefit you get from developing a device driver might include:
Native OS support for PiCAN board.
Create your create the custom IoT image, and deploy it to Microsoft store.
Possible performance improvements
others…
However, in order to develop an device driver, you need to follow the WDK framework. If you are comfortable with picking up new stuff, go ahead and try it out. You might need to refer to the linux source driver code for WDK driver developing.
If your purpose is to get the board working, you don’t need to get yourself into all these troubles.
In fact, you only need to get the SPI controller and GPIO controller, open the SPI device and initialize GPIO interrupt pin like Mcp2515Can does.
But, even after enabling the SPI, I couldn't receive anything on the
Raspberry Pi.
First, you can use Raspbian and turn on the CAN driver support to verify that you got all the wirings right. Here is the user guide you can reference.
If you can rule out the possibility of hardware failures, step into your C# code to troubleshoot the software.
Good luck.

BeagleBone Black doesn't power on

I am working in a technology Laboratory. We have 15 BBB, an suddenly, 5 of them didn't power on any more.
They stay with the power on Led on, but nothing more happens.
Picture:
What can i solve the problem?
Thank you
Prior to solve the problem, you probably have to investigate it first.
I would verify those beaglebones are still functional:
That is, checking if the beaglebone black is displaying any messages on the serial console,
The procedure for connecting a USB-to-TTL adapter is described here.
I would strongly suggest to buy the exact adapter featured in the article above on e-bay
if you don't have one.
If there were no messages displayed on the serial console, I would attempt to load u-boot from the serial port.
This can be done by connecting both P8.44/SYS_BOOT3/LCD_DATA3/GPIO2_9
and P8.43/SYS_BOOT2/LCD_DATA2/GPIO2_8 to the ground (two of P9.43/P9.44/P9.45/P9.46) using two 4.7 k
ohm resistors, powering the beaglebone with an external 5V power supply (not by USB),
and power-cycling the beaglebone - power-cycling IS required, performing a 'reset' is
not enough for the new SYSBOOT configuration to be taken into account.
You can then download u-boot from your PC using Teraterm: u-boot-spl-.bin should
be downloaded using x-modem, and u-boot.bin using y-modem, as described in the
'Boot over UART' section of this TI wiki article.
Once you have u-boot running, you should be able to reinstall your beaglebone using information available on the Internet.
If you cannot boot using the boot ROM and the serial port, this would probably be a bad sign.
I would suggest to try the procedure for loading u-boot from the serial port with a beaglebone you know is working, this is totally non-intrusive providing that you don't modify the eMMC from u-boot.

What is the most suitable virtual machine software for sharing hardware ports (COM, LPT etc) at register level?

I'm using Delphi to develop real-time control software and over the last couple of years I have done some work running older Windows installations under Microsoft's VirtualPC and it works fine for 'pure software' development (i.e no or limited access to the outside world). Such tools seem able to work with network connections but I have to maintain software which performs I/O via the parallel port (via a device driver). We also use USB I/O. In the past I've liked Microsoft's virtual tools because it takes time to install a new operating system and then (in my case) install Delphi and a load of libraries and components to provide development support. In these circumstances I've not been too bothered by my lack of access to the low-level I/O ports.
I want to up my game and I'm happy to pay for a good virtualisation tool IF I can have access from it to the outside world, i.e I want to be able to configure it to allow access to my machine's parallel port and com ports in the same way as if it was running natively. This access has to be able to expose the parallel port in register terms, i.e to 'see' the port at address $03f8 for example and to support I/O operations of those registers (via the appropriate kernel access) as my Windows 7 64-bit installation is able to do.
I see that there are a number of virtualisation solution out there now but it's quite hard to acertain the capability of each at such a low level. Does anyone have any experience or knowledge in this area?
The VMware products would be suited best for this. You can add virtual serial and parallel ports and forward them to a physical port on the host, or even to a file or a named pipe.
You can also connect any USB device that is connected to the host machine.
This works with VMware Workstation, but might even work with the free VMware player too.

Resources