Changes

Jump to: navigation, search

Physical devices mapping (BELK/BXELK)

2,216 bytes added, 09:00, 31 January 2020
History
{{InfoBoxTop}}
{{Applies To Bora}}
{{Applies To BoraX}}
{{Applies To BoraLite}}
{{InfoBoxBottom}}
This article details how physical devices are handled by the Linux kernel in the context of the [[Bora_Embedded_Linux_Kit_(BELK)|BELK]] and [[BoraX_Embedded_Linux_Kit_(BXELK)|BXELK kit]]kits. == History =={| class="wikitable" border="1"!Version!Date!BELK/BXELK version!Notes|-|{{oldid|8547|1.0.0}}|Apr 2019|[[BELK/BXELK_software_components#BELK_3.0.2_.2F_BXELK_1.0.1|3.0.0]]|BELK 3.0.0|-|2.0.0|Jan 2020|[[BELK/BXELK_software_components#BELK_4.1.0|4.1.0]]|Updated for BELK/BXELK 4.1.0|-|} 
==Console UART==
{| class="wikitable"
|-
! Kit !! Physical device !! Processor's resource !! Connector !! Type !! Linux device file !! Notes|-| BELK || Boot Console || UART1 || J17 || 2-wire RS232 UART || <code>/dev/ttyPS0</code> ||
|-
| BXELK || Boot Console || UART1 || J17 || 2-wire RS232 UART || <code>/dev/ttyPS0</code> ||
|-
|}
==NOR and NAND flash==
TBD ({{ImportantMessage|text=NOR and NAND flash memories cannot be used accessed at the same time because they shares some Zynq pins. In U-boot the switching between accesses to NOR and NAND is automatically done by U-boot itself. By default in kernel only NAND flash can be accessed. For NOR support in Linux)kernel please contact [mailto:support-bora@dave.eu technical support].}}
NOR and NAND flashes are managed as [[Memory_Tecnology_Device_(MTD)|MTD devices]].
Generally speaking, NAND flash memory is partitons partitions are defined using the kernel command line:<pre>Bora> pri mtdpartsmtdparts=mtdparts=pl35x-nand:256K(spl),768K(uboot),256K(env1),256K(env2),6M(fpga),512K(fdt),8M(kernel),-(nand-ubi)Bora></pre>adding <code>addmisc</code> to the <code>bootargs</code> parameters list. The kernel ''dmesg'' will configure the NAND partitions in the devitetreefollowing way
<pre>
partition@[ 1.148350] Creating 8 MTD partitions on "pl35x-nand":[ 1.153486] 0x000000000000-partition-table { label = 0x000000040000 : "nand-SPLspl"; reg = <0x0 0x80000>; }; partition@nand[ 1.170502] 0x000000040000-uboot { label = 0x000000100000 : "nand-uboot"; reg = <0x80000 0x80000>; }; partition@nand-uboot[ 1.186404] 0x000000100000-env1 { label = 0x000000140000 : "nand-uboot-env1"; reg = <0x100000 0x40000>; }; partition@nand-uboot[ 1.202301] 0x000000140000-env2 { label = 0x000000180000 : "nand-uboot-env2"; reg = <0x140000 0x40000>; }; partition@nand[ 1.218170] 0x000000180000-bitstream { label = 0x000000780000 : "nand-bitstreamfpga"; reg = <0x180000 0x440000>; }; partition@nand-device[ 1.229456] 0x000000780000-tree { label = 0x000000800000 : "nand-device-treefdt"; reg = <0x5C0000 0x40000>; }; partition@nand[ 1.237981] 0x000000800000-linux { label = 0x000001000000 : "nand-linuxkernel"; reg = <0x600000 0x400000>; }; partition@nand[ 1.244063] 0x000001000000-rootfs { label = 0x000040000000 : "nand-rootfsubi"; reg = <0xA00000 0x1F600000>; };
</pre>
defines these partitions:
<pre>
root@bora:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00040000 00020000 "nand-SPLspl"mtd1: 00080000 000c0000 00020000 "nand-uboot"mtd2: 00040000 00020000 "nand-uboot-env1"mtd3: 00040000 00020000 "nand-uboot-env2"mtd4: 00440000 00600000 00020000 "nand-bitstreamfpga"mtd5: 00040000 00080000 00020000 "nand-device-treefdt"mtd6: 00400000 00800000 00020000 "nand-linuxkernel"mtd7: 1f600000 3f000000 00020000 "nand-rootfsubi"
</pre>
[1] This type of cables forces the ID signal of the USB port to be connected to ground, selecting the host mode on SBC Lynx side.
===Device mode===
The following examples shows how to configure Bora/BoraEVB or BoraX and /BoraXEVB to act as a mass storage device.
First, a local file named <code>mass</code> is created to emulate a mass storage disk that is populated with a file named <code>file.txt</code>:
[ 209.099572] zynq-udc: bind to driver g_mass_storage
</pre>
Last, BoraEVB (or BoraXEVB ) is connected to a Linux PC with a USB cable like this one:
[[File:USB-cable-micro-host-a.png|thumb|center|400px|USB cable used to connect BoraXEVB to PC]]
On PC side, BoraEVB (or BoraXEVB ) is detected as a common USB mass storage device.
==CAN==
----
In case <code>canutils </code> package is missing, user can install it directly from DAVE's [[TODO|http://yocto.dave.eu/belk-latest/ BORA package server]] using <code>smart update && smart install canutils</code> commands:
[..snip..]
</pre>
 
See [[Advanced_use_of_Yocto_build_system_(BELK/BXELK)]] for more information about using Yocto packages and <code>smart</code>
==UART0==
|-
|}
 
== Temperature sensors ==
Bora SOM has a [http://www.ti.com/lit/ds/symlink/tmp422.pdf TMP421AIDCN] temperature sensor onboard.
 
The following commands can be issued from command line in order to get the SOM temperatue:
* read the PCB temperature
<pre>
root@bora:~# cat /sys/devices/soc0/amba/e0004000.i2c/i2c-0/0-004f/hwmon/hwmon1/temp1_input
</pre>
the returned value has to be divided by 1000 for a °C temperature
* read the CPU temperature
<pre>
root@bora:~# cat /sys/devices/soc0/amba/e0004000.i2c/i2c-0/0-004f/hwmon/hwmon1/temp2_input
</pre>
the returned value has to be divided by 1000 for a °C temperature
 
Moreover, the SOC has an internal temperature sensor device which can be read using the following shell script:
<pre>
root@bora:~# cat temp.sh
#!/bin/sh
 
# Tcpu
TEMP_RAW=`cat /sys/devices/soc0/amba/f8007100.adc/iio:device0/in_temp0_raw`
TEMP_OFFSET=`cat /sys/devices/soc0/amba/f8007100.adc/iio:device0/in_temp0_offset`
TEMP_SCALE=`cat /sys/devices/soc0/amba/f8007100.adc/iio:device0/in_temp0_scale`
TEMP=`awk "BEGIN {print (($TEMP_RAW+$TEMP_OFFSET)*$TEMP_SCALE)/1000}"`
 
echo "Cpu Temp: ${TEMP}"
</pre>
8,154
edits

Navigation menu