diff mbox

[1/1] Preliminary support for Raspberry Pi 3 with symlink

Message ID 1461442370-22393-1-git-send-email-ubaldo@eja.it
State Accepted
Commit b159b15d078580381e089e43c15626eef5bafb95
Headers show

Commit Message

Ubaldo Porcheddu April 23, 2016, 8:12 p.m. UTC
Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
---
 board/raspberrypi/genimage-raspberrypi3.cfg | 30 ++++++++++++++++++++++++
 board/raspberrypi/readme.txt                | 10 ++++++--
 board/raspberrypi3                          |  1 +
 configs/raspberrypi3_defconfig              | 36 +++++++++++++++++++++++++++++
 4 files changed, 75 insertions(+), 2 deletions(-)
 create mode 100644 board/raspberrypi/genimage-raspberrypi3.cfg
 create mode 120000 board/raspberrypi3
 create mode 100644 configs/raspberrypi3_defconfig

Comments

Peter Korsgaard April 25, 2016, 12:07 p.m. UTC | #1
>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:

 > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>

Committed after expanding the commit message, thanks.

I've also committed a change to sync the kernel version with what is
used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
everything works correctly after that?

What about the serial console? The rpi3 afaik uses ttyS0 instead of
ttyAMA0 for the (default) serial console. Do we need to adjust
cmdline.txt for the rpi?

I see notes about newer rpi-firmware versions fixing up ttyAMA0 -> ttyS0
when running on a rpi3, so perhaps it isn't needed?

https://github.com/RPi-Distro/repo/issues/22
Ubaldo Porcheddu April 25, 2016, 2:06 p.m. UTC | #2
Hi Peter,

Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> 
>  > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
> 
> Committed after expanding the commit message, thanks.
> 
> I've also committed a change to sync the kernel version with what is
> used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
> everything works correctly after that?

I just tested the new kernel version but it doesn't give me the login 
prompt, the kernel seems to be booting fine as it can recognize my 
keyboard but it doesn't accept any input.


> What about the serial console? The rpi3 afaik uses ttyS0 instead of
> ttyAMA0 for the (default) serial console. Do we need to adjust
> cmdline.txt for the rpi?
> 
> I see notes about newer rpi-firmware versions fixing up ttyAMA0 -> 
> ttyS0
> when running on a rpi3, so perhaps it isn't needed?
> 
> https://github.com/RPi-Distro/repo/issues/22

I don't have a serial console cable to test with at the moment, but I 
can see from the kernel log on screen a message like:

console [ttyS0] enabled
Peter Korsgaard April 25, 2016, 2:14 p.m. UTC | #3
>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:

 > Hi Peter,
 > Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
 >>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
 >> 
 >> > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
 >> 
 >> Committed after expanding the commit message, thanks.
 >> 
 >> I've also committed a change to sync the kernel version with what is
 >> used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
 >> everything works correctly after that?

 > I just tested the new kernel version but it doesn't give me the login
 > prompt, the kernel seems to be booting fine as it can recognize my
 > keyboard but it doesn't accept any input.

Hmm, odd. I do have a rpi1 at home. I'll try the 4.4 kernel on that one.

So do I understand you correctly that you do see the kernel messages on
the HDMI output but don't get a login prompt / nothing happens when you
type on your USB keyboard.

 >> What about the serial console? The rpi3 afaik uses ttyS0 instead of
 >> ttyAMA0 for the (default) serial console. Do we need to adjust
 >> cmdline.txt for the rpi?
 >> 
 >> I see notes about newer rpi-firmware versions fixing up ttyAMA0 -> 
 >> ttyS0
 >> when running on a rpi3, so perhaps it isn't needed?
 >> 
 >> https://github.com/RPi-Distro/repo/issues/22

 > I don't have a serial console cable to test with at the moment, but I
 > can see from the kernel log on screen a message like:

 > console [ttyS0] enabled

Ok, sounds like it does the right thing then - Thanks!
Benoît Allard April 25, 2016, 2:16 p.m. UTC | #4
On Mon, 25 Apr 2016 15:06:54 +0100
Ubaldo Porcheddu <ubaldo@eja.it> wrote:

> Hi Peter,
> 
> Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
> >>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> > 
> >  > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
> > 
> > Committed after expanding the commit message, thanks.
> > 
> > I've also committed a change to sync the kernel version with what is
> > used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
> > everything works correctly after that?
> 
> I just tested the new kernel version but it doesn't give me the login 
> prompt, the kernel seems to be booting fine as it can recognize my 
> keyboard but it doesn't accept any input.
> 

I had something similar, removed the 'console=ttyAMA0...' from the
cmdline.txt file, and it booted through. Mine was not able to recognize
my keyboard, but with dropbear and an extra user I was able to login.

> 
> > What about the serial console? The rpi3 afaik uses ttyS0 instead of
> > ttyAMA0 for the (default) serial console. Do we need to adjust
> > cmdline.txt for the rpi?
> > 
> > I see notes about newer rpi-firmware versions fixing up ttyAMA0 -> 
> > ttyS0
> > when running on a rpi3, so perhaps it isn't needed?
> > 
> > https://github.com/RPi-Distro/repo/issues/22
> 
> I don't have a serial console cable to test with at the moment, but I 
> can see from the kernel log on screen a message like:
> 
> console [ttyS0] enabled

I see:

    3f215040.uart: ttyS0 at MMIO 0x3f215040 (irq = 59, base_baud =
    50000000) is a 16550

Please note that there is a line about tyAMA0 in the kernel boot logs as
well:

    3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0)
    is a PL011 rev2

Regards,
Ben.

> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Ubaldo Porcheddu April 25, 2016, 2:22 p.m. UTC | #5
Il 2016-04-25 15:14 Peter Korsgaard ha scritto:
>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> 
>  > Hi Peter,
>  > Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
>  >>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
>  >>
>  >> > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
>  >>
>  >> Committed after expanding the commit message, thanks.
>  >>
>  >> I've also committed a change to sync the kernel version with what 
> is
>  >> used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
>  >> everything works correctly after that?
> 
>  > I just tested the new kernel version but it doesn't give me the 
> login
>  > prompt, the kernel seems to be booting fine as it can recognize my
>  > keyboard but it doesn't accept any input.
> 
> Hmm, odd. I do have a rpi1 at home. I'll try the 4.4 kernel on that 
> one.
> 
> So do I understand you correctly that you do see the kernel messages on
> the HDMI output but don't get a login prompt / nothing happens when you
> type on your USB keyboard.

yes this is actually what is happening.
Ubaldo Porcheddu April 25, 2016, 2:34 p.m. UTC | #6
Hi Ben,

Il 2016-04-25 15:16 Benoît Allard ha scritto:
> On Mon, 25 Apr 2016 15:06:54 +0100
> Ubaldo Porcheddu <ubaldo@eja.it> wrote:
> 
>> Hi Peter,
>> 
>> Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
>> >>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
>> >
>> >  > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
>> >
>> > Committed after expanding the commit message, thanks.
>> >
>> > I've also committed a change to sync the kernel version with what is
>> > used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
>> > everything works correctly after that?
>> 
>> I just tested the new kernel version but it doesn't give me the login
>> prompt, the kernel seems to be booting fine as it can recognize my
>> keyboard but it doesn't accept any input.
>> 
> 
> I had something similar, removed the 'console=ttyAMA0...' from the
> cmdline.txt file, and it booted through. Mine was not able to recognize
> my keyboard, but with dropbear and an extra user I was able to login.

after removing the extra console declaration I can also get the login, 
my keyboard get recognized by the kernel but it doesn't work properly, 
seems to be adding extra characters after any key press.
Peter Korsgaard April 25, 2016, 2:40 p.m. UTC | #7
>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:

Hi,

>>> I just tested the new kernel version but it doesn't give me the login
 >>> prompt, the kernel seems to be booting fine as it can recognize my
 >>> keyboard but it doesn't accept any input.
 >>> 
 >> 
 >> I had something similar, removed the 'console=ttyAMA0...' from the
 >> cmdline.txt file, and it booted through. Mine was not able to recognize
 >> my keyboard, but with dropbear and an extra user I was able to login.

 > after removing the extra console declaration I can also get the login,
 > my keyboard get recognized by the kernel but it doesn't work properly,
 > seems to be adding extra characters after any key press.

Funky. Removing console=ttyAMA0 (or console=ttyS0) would mean that tty1
becomes /dev/console, so we end up having two gettys running on tty1
which could explain the double characters.

I'm not sure why it doesn't work with console= pointing at the serial
port. Luca, you added the serial console handling, any idea what might
be going wrong?
Ubaldo Porcheddu April 25, 2016, 3:10 p.m. UTC | #8
Hi,

Il 2016-04-25 15:40 Peter Korsgaard ha scritto:
>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> 
> Hi,
> 
>>>> I just tested the new kernel version but it doesn't give me the 
>>>> login
>  >>> prompt, the kernel seems to be booting fine as it can recognize my
>  >>> keyboard but it doesn't accept any input.
>  >>>
>  >>
>  >> I had something similar, removed the 'console=ttyAMA0...' from the
>  >> cmdline.txt file, and it booted through. Mine was not able to 
> recognize
>  >> my keyboard, but with dropbear and an extra user I was able to 
> login.
> 
>  > after removing the extra console declaration I can also get the 
> login,
>  > my keyboard get recognized by the kernel but it doesn't work 
> properly,
>  > seems to be adding extra characters after any key press.
> 
> Funky. Removing console=ttyAMA0 (or console=ttyS0) would mean that tty1
> becomes /dev/console, so we end up having two gettys running on tty1
> which could explain the double characters.
> 
> I'm not sure why it doesn't work with console= pointing at the serial
> port. Luca, you added the serial console handling, any idea what might
> be going wrong?

You are right about the double getty, indeed if I set console=tty2 I end 
up with a working getty/login on tty1 and tty2 and error messages on 
tty2.

Maybe the problem is in /etc/inittab using "console" in place of ttyS0?
Peter Korsgaard April 25, 2016, 7:07 p.m. UTC | #9
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

Hi,

 >> I just tested the new kernel version but it doesn't give me the login
 >> prompt, the kernel seems to be booting fine as it can recognize my
 >> keyboard but it doesn't accept any input.

 > Hmm, odd. I do have a rpi1 at home. I'll try the 4.4 kernel on that one.

On the rpi1 everything works correctly. /dev/console refers to the
serial port and I can login both on HDMI and serial - So I guess the
problem must be specific to the rpi3.
Peter Seiderer April 25, 2016, 7:19 p.m. UTC | #10
Hello Ubaldo,

(and sorry from dropping you from CC, your e-mail address seems not to
be reachable from gmx.net)

On Mon, 25 Apr 2016 15:06:54 +0100, Ubaldo Porcheddu <ubaldo@eja.it> wrote:

> Hi Peter,
> 
> Il 2016-04-25 13:07 Peter Korsgaard ha scritto:
> >>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> > 
> >  > Signed-off-by: Ubaldo Porcheddu <ubaldo@eja.it>
> > 
> > Committed after expanding the commit message, thanks.
> > 
> > I've also committed a change to sync the kernel version with what is
> > used for rpi1/2 (E.G. the rpi-4.4.y branch). Care to verify that
> > everything works correctly after that?
> 
> I just tested the new kernel version but it doesn't give me the login 
> prompt, the kernel seems to be booting fine as it can recognize my 
> keyboard but it doesn't accept any input.
> 
 
Same here on RPi3, but with the suggested fix from Oscar Gomez Fuente [1],
adding 'dtoverlay=pi3-disable-bt' to config.txt I get working boot
messages and login on HDMI and serial console...

Regards,
Peter

[1] http://lists.busybox.net/pipermail/buildroot/2016-April/159295.html

> 
> > What about the serial console? The rpi3 afaik uses ttyS0 instead of
> > ttyAMA0 for the (default) serial console. Do we need to adjust
> > cmdline.txt for the rpi?
> > 
> > I see notes about newer rpi-firmware versions fixing up ttyAMA0 -> 
> > ttyS0
> > when running on a rpi3, so perhaps it isn't needed?
> > 
> > https://github.com/RPi-Distro/repo/issues/22
> 
> I don't have a serial console cable to test with at the moment, but I 
> can see from the kernel log on screen a message like:
> 
> console [ttyS0] enabled
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Peter Korsgaard April 25, 2016, 7:32 p.m. UTC | #11
>>>>> "Peter" == Peter Seiderer <ps.report@gmx.net> writes:

Hi,

 > Same here on RPi3, but with the suggested fix from Oscar Gomez Fuente
 > [1], adding 'dtoverlay=pi3-disable-bt' to config.txt I get working
 > boot messages and login on HDMI and serial console...

Just to confirm, neither serial or HDMI works without the dtoverlay
line?

I see various references to a clocking issue with the "new" serial port,
perhaps that is related?
Peter Seiderer April 25, 2016, 7:55 p.m. UTC | #12
Hello Peter,

On Mon, 25 Apr 2016 21:32:14 +0200, Peter Korsgaard <peter@korsgaard.com> wrote:

> >>>>> "Peter" == Peter Seiderer <ps.report@gmx.net> writes:
> 
> Hi,
> 
>  > Same here on RPi3, but with the suggested fix from Oscar Gomez Fuente
>  > [1], adding 'dtoverlay=pi3-disable-bt' to config.txt I get working
>  > boot messages and login on HDMI and serial console...
> 
> Just to confirm, neither serial or HDMI works without the dtoverlay
> line?

Without the overlay I get boot messages on HDMI, but no login, last messages
are from USB keyboard/mouse and I can get more messages removing/adding
keyboard/mouse...., no messages on serial console (but 'ttyS0: 29 input overrun(s)
message on HDMI output)

From linux-3de232825c9ba5989522b8691eb6ac5df6619458/arch/arm/boot/dts/overlays/pi3-disable-bt-overlay.dts:

  Disable Bluetooth and restore UART0/ttyAMA0 over GPIOs 14 & 15.

So I think the overlay changes the pin muxing (and the orignal config seems to break
the console, maybe flow control deadlock with the bluetooth chip?)...

> 
> I see various references to a clocking issue with the "new" serial port,
> perhaps that is related?
> 

This was with old kernel/firmware but adding 'core_freq=250' to config.txt
fixed it...

Regads,
Peter
Luca Ceresoli April 26, 2016, 2:22 p.m. UTC | #13
Peter, Ubaldo,

On 25/04/2016 16:40, Peter Korsgaard wrote:
>>>>>> "Ubaldo" == Ubaldo Porcheddu <ubaldo@eja.it> writes:
> 
> Hi,
> 
>>>> I just tested the new kernel version but it doesn't give me the login
>  >>> prompt, the kernel seems to be booting fine as it can recognize my
>  >>> keyboard but it doesn't accept any input.
>  >>> 
>  >> 
>  >> I had something similar, removed the 'console=ttyAMA0...' from the
>  >> cmdline.txt file, and it booted through. Mine was not able to recognize
>  >> my keyboard, but with dropbear and an extra user I was able to login.
> 
>  > after removing the extra console declaration I can also get the login,
>  > my keyboard get recognized by the kernel but it doesn't work properly,
>  > seems to be adding extra characters after any key press.
> 
> Funky. Removing console=ttyAMA0 (or console=ttyS0) would mean that tty1
> becomes /dev/console, so we end up having two gettys running on tty1
> which could explain the double characters.
> 
> I'm not sure why it doesn't work with console= pointing at the serial
> port. Luca, you added the serial console handling, any idea what might
> be going wrong?

At first sight, no. But I experienced a similar issue while I was
testing my patch [0].

I was able to login on tty1 with a USB keyboard, but typing a few
characters such as "ls<ENTER>" just after login would do weird things
like logging me out. This was using a super-cheap keyboard I had never
used before. I retried with a trusted one, and it was working just fine.
This got me clueless, so I triple-checked, and the problem was always
happening with the cheap keyboard, never with the trusted one.

I thought the cheap keyboard must be broken and "archived" it.

I would be surprised if you could solve your issues by changing
keyboard, but it's worth giving it a try...

[0]
https://git.buildroot.net/buildroot/commit/?id=20878a1017e2bf7eb8c5f870dc6d2641493cb0f9
diff mbox

Patch

diff --git a/board/raspberrypi/genimage-raspberrypi3.cfg b/board/raspberrypi/genimage-raspberrypi3.cfg
new file mode 100644
index 0000000..7ba89c5
--- /dev/null
+++ b/board/raspberrypi/genimage-raspberrypi3.cfg
@@ -0,0 +1,30 @@ 
+image boot.vfat {
+  vfat {
+    files = {
+      "bcm2710-rpi-3-b.dtb",
+      "rpi-firmware/bootcode.bin",
+      "rpi-firmware/cmdline.txt",
+      "rpi-firmware/config.txt",
+      "rpi-firmware/fixup.dat",
+      "rpi-firmware/start.elf",
+      "kernel-marked/zImage"
+    }
+  }
+  size = 32M
+}
+
+image sdcard.img {
+  hdimage {
+  }
+
+  partition boot {
+    partition-type = 0xC
+    bootable = "true"
+    image = "boot.vfat"
+  }
+
+  partition rootfs {
+    partition-type = 0x83
+    image = "rootfs.ext4"
+  }
+}
diff --git a/board/raspberrypi/readme.txt b/board/raspberrypi/readme.txt
index 896be2d..a170f8f 100644
--- a/board/raspberrypi/readme.txt
+++ b/board/raspberrypi/readme.txt
@@ -6,7 +6,8 @@  Intro
 These instructions apply to all models of the Raspberry Pi:
   - the original models A and B,
   - the "enhanced" models A+ and B+,
-  - the model B2 (aka Raspberry Pi 2).
+  - the model B2 (aka Raspberry Pi 2)
+  - the model B3 (aka Raspberry Pi 3).
 
 How to build it
 ===============
@@ -21,10 +22,14 @@  For models A, B, A+ or B+:
 
   $ make raspberrypi_defconfig
 
-And for model 2 B:
+For model 2 B:
 
   $ make raspberrypi2_defconfig
 
+For model 3 B:
+
+  $ make raspberrypi3_defconfig
+
 Build the rootfs
 ----------------
 
@@ -46,6 +51,7 @@  After building, you should obtain this tree:
     +-- bcm2708-rpi-b.dtb           [1]
     +-- bcm2708-rpi-b-plus.dtb      [1]
     +-- bcm2709-rpi-2-b.dtb         [1]
+    +-- bcm2710-rpi-3-b.dtb         [1]
     +-- boot.vfat
     +-- kernel-marked/zImage        [2]
     +-- rootfs.ext4
diff --git a/board/raspberrypi3 b/board/raspberrypi3
new file mode 120000
index 0000000..fcdafc8
--- /dev/null
+++ b/board/raspberrypi3
@@ -0,0 +1 @@ 
+raspberrypi
\ No newline at end of file
diff --git a/configs/raspberrypi3_defconfig b/configs/raspberrypi3_defconfig
new file mode 100644
index 0000000..80ce908
--- /dev/null
+++ b/configs/raspberrypi3_defconfig
@@ -0,0 +1,36 @@ 
+BR2_arm=y
+BR2_cortex_a7=y
+BR2_ARM_EABIHF=y
+BR2_ARM_FPU_NEON_VFPV4=y
+
+BR2_TOOLCHAIN_BUILDROOT_CXX=y
+
+BR2_SYSTEM_DHCP="eth0"
+
+# Linux headers same as kernel, a 4.1 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y
+
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="20fe468af4bb40fec0f81753da4b20a8bfc259c9"
+BR2_LINUX_KERNEL_DEFCONFIG="bcm2709"
+
+# Build the DTB from the kernel sources
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b"
+
+BR2_PACKAGE_RPI_FIRMWARE=y
+# BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set
+
+# Required tools to create the SD image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MTOOLS=y
+
+# Filesystem / image
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+# BR2_TARGET_ROOTFS_TAR is not set
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi3/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi3/post-image.sh"