Re: [U-Boot] porting u-boot, few final questions

2014-11-11 Thread DaveKucharczyk
So the issues of the variables changing were due to me initializing
everything in board_early_init_f(). I moved everything out of it except uart
setup. If I setup the uart in board_init() instead of board_early_init_f()
then the early cpu info stuff is missed. I guess there’s an opportunity for
improvement there.

I still have a question pertaining to the changing variables though. It has
to do with pre and post relocation. Variables declared in functions
pre-reloc will be different when used in functions post-reloc.

For instance. If I set a variable in board_early_init_f() and then, without
changing it, print it in board_late_init() then it will be different. 

So my question is how can I get around this?

This is where I’m stuck…

I’m trying to write the reset cause to SRAM in board_late_init(). The reset
cause is printed early by default when defining CONFIG_DISPLAY_CPUINFO in
the header file. 

When I access the register in board_late_init() it prints 0, which is wrong.

I tried…

and this(which is what arch/arm/imx-common/cpu.c uses to print reset cause)…

All return 0 when called in board_late_init() even though at startup the
correct reset cause is displayed, but I have to write it to SRAM later on.
And by that time it's 0. 

I think this has to do with what Wolfgang said about ds, bss, and stack, but
if someone can shed some light that would be great. :) Thanks




--
View this message in context: 
http://u-boot.10912.n7.nabble.com/porting-u-boot-MMU-question-tp194761p195618.html
Sent from the U-Boot mailing list archive at Nabble.com.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread DaveKucharczyk
Hi again. I just have a few things left to complete the port and hoping
someone can help me out.

1. How come setenv is not working in the board file? I tried setenv in
different locations of board_early_init_f(), board_init(), board_late_init()
and checkboard(), but it's not working. Did something change?

2. Can we run a non fdt kernel with new U-Boot? I'm not there yet, but just
wondering for testing.

3.  I don't want to detract from the other two questions, which are more
important at this time, but nothing in board_late_init() seems to be working
for me. I do have BOARD_LATE_INIT defined in the config header file. Even a
printf at the top is not working. 

Thanks for your time.   



--
View this message in context: 
http://u-boot.10912.n7.nabble.com/porting-u-boot-MMU-question-tp194761p195399.html
Sent from the U-Boot mailing list archive at Nabble.com.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread Fabio Estevam
On Mon, Nov 10, 2014 at 1:14 PM, DaveKucharczyk
david.kucharc...@gmail.com wrote:
 Hi again. I just have a few things left to complete the port and hoping
 someone can help me out.

 1. How come setenv is not working in the board file? I tried setenv in
 different locations of board_early_init_f(), board_init(), board_late_init()
 and checkboard(), but it's not working. Did something change?

Haven't tried it, but if this does not work, then it is a bug that
needs to be fixed. Do you have access to a mx53 qsb board? Does it
work there?

On mx6 we have several boards calling setenv from the board files.

 2. Can we run a non fdt kernel with new U-Boot? I'm not there yet, but just
 wondering for testing.

Yes, take a look at include/configs/mx53loco.h: we have the variable
boot_fdt, just set it: setenv boot_fdt no to boot a non-dt kernel.


 3.  I don't want to detract from the other two questions, which are more
 important at this time, but nothing in board_late_init() seems to be working
 for me. I do have BOARD_LATE_INIT defined in the config header file. Even a
 printf at the top is not working.

Does this problem also happen on mx53 qsb?
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread Wolfgang Denk
Dear Fabio Estevam,

In message CAOMZO5AiJtDt_CZrO6gzU=jipp_2-etpigfck7zhfhnnzxp...@mail.gmail.com 
you wrote:

  1. How come setenv is not working in the board file? I tried setenv in
  different locations of board_early_init_f(), board_init(), board_late_init()
  and checkboard(), but it's not working. Did something change?
 
 Haven't tried it, but if this does not work, then it is a bug that
 needs to be fixed. Do you have access to a mx53 qsb board? Does it
 work there?

Suffix _f trditionally means running from flash, i. e. this is
before relocation to RAM. Here we have usually only a read-ony data
segment, no BSS at all, and only limted stack.  All complicated stuff
like setenv is only supposed to be available after relocation.

 On mx6 we have several boards calling setenv from the board files.

Actual behaviour is hardware-dependent, but it's better not to make
any such guesses.

Actually it is usually a very bad idea to mandatorily modify the
envrionment in code.  This is almost always a design error.


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Living on Earth may be expensive, but it includes an annual free trip
around the Sun.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread Fabio Estevam
On Mon, Nov 10, 2014 at 1:47 PM, Wolfgang Denk w...@denx.de wrote:
 Dear Fabio Estevam,

 In message 
 CAOMZO5AiJtDt_CZrO6gzU=jipp_2-etpigfck7zhfhnnzxp...@mail.gmail.com you 
 wrote:

  1. How come setenv is not working in the board file? I tried setenv in
  different locations of board_early_init_f(), board_init(), 
  board_late_init()
  and checkboard(), but it's not working. Did something change?

 Haven't tried it, but if this does not work, then it is a bug that
 needs to be fixed. Do you have access to a mx53 qsb board? Does it
 work there?

 Suffix _f trditionally means running from flash, i. e. this is
 before relocation to RAM. Here we have usually only a read-ony data
 segment, no BSS at all, and only limted stack.  All complicated stuff
 like setenv is only supposed to be available after relocation.

Just tested on real hardware and the below change works:

--- a/board/freescale/mx53loco/mx53loco.c
+++ b/board/freescale/mx53loco/mx53loco.c
@@ -404,6 +404,12 @@ int board_late_init(void)
return 0;
 }

+int misc_init_r(void)
+{
+   setenv(myvar, 123456);
+   return 0;
+}
+
 int checkboard(void)
 {
puts(Board: MX53 LOCO\n);
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index a74508c..8f692d7 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -29,6 +29,7 @@

 #define CONFIG_BOARD_EARLY_INIT_F
 #define CONFIG_BOARD_LATE_INIT
+#define CONFIG_MISC_INIT_R
 #define CONFIG_MXC_GPIO
 #define CONFIG_REVISION_TAG


 On mx6 we have several boards calling setenv from the board files.

 Actual behaviour is hardware-dependent, but it's better not to make
 any such guesses.

Yes, but not sure how a mx6 can differ from a mx5 in getting setenv to work.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread Nikolay Dimitrov

Hi gents,

On 11/10/2014 06:04 PM, Fabio Estevam wrote:

On Mon, Nov 10, 2014 at 1:47 PM, Wolfgang Denk w...@denx.de wrote:

Dear Fabio Estevam,

In message CAOMZO5AiJtDt_CZrO6gzU=jipp_2-etpigfck7zhfhnnzxp...@mail.gmail.com 
you wrote:



1. How come setenv is not working in the board file? I tried setenv in
different locations of board_early_init_f(), board_init(), board_late_init()
and checkboard(), but it's not working. Did something change?


Haven't tried it, but if this does not work, then it is a bug that
needs to be fixed. Do you have access to a mx53 qsb board? Does it
work there?


Suffix _f trditionally means running from flash, i. e. this is
before relocation to RAM. Here we have usually only a read-ony data
segment, no BSS at all, and only limted stack.  All complicated stuff
like setenv is only supposed to be available after relocation.


Just tested on real hardware and the below change works:

--- a/board/freescale/mx53loco/mx53loco.c
+++ b/board/freescale/mx53loco/mx53loco.c
@@ -404,6 +404,12 @@ int board_late_init(void)
 return 0;
  }

+int misc_init_r(void)
+{
+   setenv(myvar, 123456);
+   return 0;
+}
+
  int checkboard(void)
  {
 puts(Board: MX53 LOCO\n);
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index a74508c..8f692d7 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -29,6 +29,7 @@

  #define CONFIG_BOARD_EARLY_INIT_F
  #define CONFIG_BOARD_LATE_INIT
+#define CONFIG_MISC_INIT_R
  #define CONFIG_MXC_GPIO
  #define CONFIG_REVISION_TAG




On mx6 we have several boards calling setenv from the board files.


Actual behaviour is hardware-dependent, but it's better not to make
any such guesses.


Yes, but not sure how a mx6 can differ from a mx5 in getting setenv to work.


Please correct me if I'm wrong, but setting env-vars shouldn't work
before the environment is initialized. This initialization happens when
the initr_env() is called according the order in init_sequence_r[].

@Dave - the easiest way to verify when your code (which tries to work
with the env-vars) is executed and when the actual environment is
initialized, is to enable debugging in
lib/initcall.c:initcall_run_list(), see the pointers of the called
functions and check them in the System.map. The env is initialized in
the call tree below initr_env(), so your code should use the env after
that.

Regards,
Nikolay
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread DaveKucharczyk
Update: my board_late_init() function wasn’t working because I defined
BOARD_LATE_INIT instead of CONFIG_BOARD_LATE_INIT. Doh!

Since arch/arm/lib/board.c file is being removed, and when
CONFIG_SYS_GENERIC_BOARD is defined, we are now using…
common/board_f.c (for pre-relocation init)
common/board_r.c (for post-relocation init)

So my board file sequence is (in order of calling sequence according to the
above two files)…

1.  board_early_init_f() – needed to setup my uart, otherwise early output 
is
missed
2.  checkboard() – print board info - still in flash
3.  board_init() – says chipselects should be setup here – we are running
from RAM now
4.  initr_env() is called here
5.  board_late_init() - 

Nikolay, appears you are correct, initr_env must be called first in order to
use setenv. That’s why setenv didn’t work in board_early_init_f or
checkboard or board_init. 

Fabio, your change worked when I use setenv in misc_init_r and helped me
debug some issues. Thanks guys. 

Is there a doc or a good read that explains which init functions are
necessary for what? Or which ones should be used for “proper” design? 

I’m sure I’ll be back with more questions real soon. :)




--
View this message in context: 
http://u-boot.10912.n7.nabble.com/porting-u-boot-MMU-question-tp194761p195451.html
Sent from the U-Boot mailing list archive at Nabble.com.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] porting u-boot, few final questions

2014-11-10 Thread DaveKucharczyk
So I am having another issue probably more related to computer science
fundamentals. 

I have a global variable boot_dev defined in my board file like so... 

I define boot_device in arch/arm/include/asm/arch-mx5/sys_proto.h like this…

Now, boot_dev returns the correct value in checkboard(), but returns 0 when
called from any other function.

board_early_init_f() – we set boot_dev
checkboard() – we print it and works fine, prints 6 (SD_BOOT)
board_init() – prints 0 here
board_late_init() - prints 0 here

So…boot_dev is not set anywhere else except board_early_init_f(), then it
prints ok in checkboard(), but then it gets set to 0 somehow. Anyone know
why this could be? Checkboard() runs from flash and the others run from RAM.
Can that have something to do with it?




--
View this message in context: 
http://u-boot.10912.n7.nabble.com/porting-u-boot-MMU-question-tp194761p195488.html
Sent from the U-Boot mailing list archive at Nabble.com.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot