Re: Serial connection is garbled at 32MHz
"Loren A. Linden Levy" <[email protected]> Thu, 17 Apr 2008 09:12:36 -0600
| Newsgroups | gmane.comp.hardware.motorola.microcontrollers.coldfire |
|---|---|
| Organization | University of Colorado |
| Message-ID | <[email protected]> |
Hi Greg, Good thought, I went and looked for that too. But alas it was not a change there other than adding the definition of 32MHz. Index: asm-m68knommu/coldfire.h =================================================================== RCS file: /var/cvs/uClinux-2.4.x/include/asm-m68knommu/coldfire.h,v retrieving revision 1.19 diff -u -r1.19 coldfire.h --- asm-m68knommu/coldfire.h 25 Sep 2007 06:25:01 -0000 1.19 +++ asm-m68knommu/coldfire.h 17 Apr 2008 15:10:14 -0000 @@ -38,6 +38,7 @@ /* * Define master clock frequency. */ + #if defined(CONFIG_CLOCK_11MHz) #define MCF_CLK 11289600 #elif defined(CONFIG_CLOCK_16MHz) @@ -50,6 +51,8 @@ #define MCF_CLK 25000000 #elif defined(CONFIG_CLOCK_29_5MHz) #define MCF_CLK 29500000 +#elif defined(CONFIG_CLOCK_32MHz) +#define MCF_CLK 32000000 #elif defined(CONFIG_CLOCK_33MHz) #define MCF_CLK 33000000 #elif defined(CONFIG_CLOCK_40MHz) Only CONFIG_M547x, CONFIG_M5208), CONFIG_M5235, CONFIG_M5249, and CONFIG_M527x get either a multiple of 2 or division by 2. I am starting to think it might have something to do with my boot-loader (u-boot) but I am not sure. Alex On Thu, 17 Apr 2008 15:41:13 +1000 Greg Ungerer <[email protected]> wrote: > > Hi Loren, > > Loren A. Linden Levy wrote: > > So this is really funny if I calculate the UBG1(2) values in this way: > > > > #if defined(CONFIG_CLOCK_32MHz) && defined(CONFIG_M5282) > > printk("Alex's baud rate hack!!!\n"); > > baudclk = ((2*MCF_BUSCLK / mcfrs_baud_table[i]) + 16 ) / 32; > > > > rather than: > > > > #else > > baudclk = ((MCF_BUSCLK / mcfrs_baud_table[i]) + 16) / 32; > > #endif > > > > I get 19200 baud rate. What the heck is going on here.... > > Hmmm, you didn't change coldfire.h did you? > It has conditional code for some ColdFire CPU types that > divides the master clock frequency by 2 to get that MCF_BUSCLK. > Though the 5282 is not one of them normally. > > Regards > Greg > > > > > > > On Mon, 07 Apr 2008 10:50:44 +1000 > > Greg Ungerer <[email protected]> wrote: > > > >> Hi Loren, > >> > >> Loren A. Linden Levy wrote: > >>> On Fri, 04 Apr 2008 11:06:59 +1000 > >>> Greg Ungerer <[email protected]> wrote: > >>>> Allon Stern wrote: > >>>>> On Apr 3, 2008, at 2:20 PM, Loren A. Linden Levy wrote: > >>>>>> So I am making progress with this external FPGA (thanks to all the > >>>>>> help) and I have the code basically working (I think). One thing we > >>>>>> are doing is artificially running the chip (M%282) at 32MHz and this > >>>>>> screws up the display over serial (I get nonsense characters). This is > >>>>>> not too big a deal b/c I can connect just fine over telnet I was just > >>>>>> wondering if there was an obvious way to fix it (settings?). Thanks > >>>>>> again. > >>>>> I'd suggest looking at (assuming 2.6) linux2.6.x/drivers/serial/mcfserial.c > >>>>> > >>>>> Look for the line (#636 in my kernel): > >>>>> /* compute the baudrate clock */ > >>>>> > >>>>> This is where it determines the baudrate clock based on the CPU clock. > >>>>> > >>>>> It appears to be based off of MCF_BUSCLK, which is defined in > >>>>> linux2.6.x./include/asm-m68knommu/coldfire.h as > >>>>> #define MCF_BUSCLK (CONFIG_CLOCK_FREQ / CONFIG_CLOCK_DIV) > >>>>> > >>>>> Both CONFIG_CLOCK_FREQ and CONFIG_CLOCK_DIV are defined in your .config. > >>>> That is right. If you are just feeding a different master > >>>> clock to the 5282 then the right change to make is to > >>>> CONFIG_CLOCK_FREQ. Look for the config menu item with the > >>>> text "Set the core clock frequency". This is only in 2.6.x > >>>> kernels. > >>>> > >>>> If using a 2.4.x kernel then you need to change the clock > >>>> frequency manually in the source (look in > >>>> linux-2.4.x/include/asm-arm/coldfire.h). > >>> > >>> It is a 2.4.x kernel and I actually already added the 32MHz option > >>> (coldfire.h): > >>> > >>> --- linux-2.4.x/include/asm-m68knommu/coldfire.h 25 Sep 2007 06:25:01 -0000 1.19 > >>> +++ linux-2.4.x/include/asm-m68knommu/coldfire.h 4 Apr 2008 17:46:52 -0000 > >>> @@ -38,6 +38,7 @@ > >>> /* > >>> * Define master clock frequency. > >>> */ > >>> + > >>> #if defined(CONFIG_CLOCK_11MHz) > >>> #define MCF_CLK 11289600 > >>> #elif defined(CONFIG_CLOCK_16MHz) > >>> @@ -50,6 +51,8 @@ > >>> #define MCF_CLK 25000000 > >>> #elif defined(CONFIG_CLOCK_29_5MHz) > >>> #define MCF_CLK 29500000 > >>> +#elif defined(CONFIG_CLOCK_32MHz) > >>> +#define MCF_CLK 32000000 > >>> #elif defined(CONFIG_CLOCK_33MHz) > >>> #define MCF_CLK 33000000 > >>> #elif defined(CONFIG_CLOCK_40MHz) > >>> > >>> > >>> and an entry in the config.in file for kernel configuration. > >>> > >>> --- linux-2.4.x/arch/m68knommu/config.in 25 Sep 2007 06:25:01 -0000 1.76 > >>> +++ linux-2.4.x/arch/m68knommu/config.in 4 Apr 2008 17:46:09 -0000 > >>> @@ -34,7 +34,6 @@ > >>> endmenu > >>> > >>> ############################################################################# > >>> - > >>> mainmenu_option next_comment > >>> comment 'Processor type and features' > >>> > >>> @@ -93,6 +92,7 @@ > >>> 24MHz CONFIG_CLOCK_24MHz \ > >>> 25MHz CONFIG_CLOCK_25MHz \ > >>> 29.5MHz CONFIG_CLOCK_29_5MHz \ > >>> + 32MHz CONFIG_CLOCK_32MHz \ > >>> 33MHz CONFIG_CLOCK_33MHz \ > >>> 40MHz CONFIG_CLOCK_40MHz \ > >>> 45MHz CONFIG_CLOCK_45MHz \ > >>> > >>> > >>> Now I am a little confused about the serial baudrate calculation (I > >>> found it is actually in the file drivers/char/mcfserial.c). > >>> > >>> For the M5282 the calculation is: > >>> > >>> #else > >>> baudclk = ((MCF_BUSCLK / mcfrs_baud_table[i]) + 16) / 32; > >>> #endif > >>> > >>> Which is basically identical to what I found in the manual. Here the > >>> baud_rate table entry is number 14 which is 19200. So the baudclck for > >>> 32MHz and 66MHz come out to be 52 and 180 respectively. I guess i do not understand why I am getting junk out if the clock calculation here is being mad correctly. I am in the process of looking throiugh the UART UBG settings to se iff there is something I am missing. Any input or hints would be appreciated. > >> Seems like you have taken the correct approach. > >> > >> Regards > >> Greg > >> > >> > >> > >> ------------------------------------------------------------------------ > >> Greg Ungerer -- Chief Software Dude EMAIL: [email protected] > >> Secure Computing Corporation PHONE: +61 7 3435 2888 > >> 825 Stanley St, FAX: +61 7 3891 3630 > >> Woolloongabba, QLD, 4102, Australia WEB: http://www.SnapGear.com > >> --- > >> [email protected] Send a post to the list. > >> [email protected] Join the list. > >> [email protected] Join the list in digest mode. > >> [email protected] Leave the list. > >> > > > > > > -- -- --------------------------------------------- Loren A. Linden Levy Department of Physics 390 UCB University of Colorado Boulder, CO 80309-0390 Tel: 303-735-6146 (CU) / +049 040 8998 4789 (DESY) Fax: 303-492-3352 (CU) / +049 040 8998 4034 (DESY) Cell: 303-332-2768 (U.S.) / +049 (0)151 5496 1831 (Germany) Email: [email protected] url: http://up.colorado.edu/~lindenle _____________________________________________ --------------------------------------------- This email has been cryptographically signed. Search for "lindenle" at pgp.mit.edu to obtain my public key which can be used to verify the authenticity of this message. _____________________________________________ ---------------------------------------------
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFIB2jnlZX6YS+3ZksRAkEtAJ9I2u84QFrDyK7NdA8qTBayCPZ2AQCeLvoY qSzjpxloMhSIFSqlEcJ827E= =Wtl5 -----END PGP SIGNATURE-----