All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Schmidt <stefan@osg.samsung.com>
To: Alexander Aring <alex.aring@gmail.com>
Cc: linux-wpan@vger.kernel.org, kernel@pengutronix.de,
	Werner Almesberger <werner@almesberger.net>
Subject: Re: [RFC ben-wpan] atusb: fw: add support for rzusbstick
Date: Mon, 01 Jun 2015 16:35:02 +0200	[thread overview]
Message-ID: <556C6D96.9010007@osg.samsung.com> (raw)
In-Reply-To: <20150601133815.GB1195@omega>

Hello.

On 01/06/15 15:38, Alexander Aring wrote:
> Hi,
>
> On Wed, May 27, 2015 at 12:04:14PM +0200, Stefan Schmidt wrote:
>> Hello.
>>
>> On 24/05/15 14:37, Alexander Aring wrote:
>>> This patch adds support for the rzusbstick for the atusb firmware.
>>> More detailed information about this usb stick:
>>>
>>> http://www.atmel.com/tools/rzusbstick.aspx
>> Thanks a lot for working on this. Given that it is still available and the
>> price is good it can help people to play around with ieee802154 a bit more.
>>
>>> Original I have the rzraven kit:
>>>
>>> http://www.atmel.com/tools/rzraven.aspx
>>>
>>> Which comes with a special cable and avr dragon programmer. You need
>>> some programmer and wires to the programmers pins. To lookup how to
>>> connect the programmer to the rzusbstick pinout, see:
>>>
>>> http://www.atmel.com/Images/doc8117.pdf
>>>
>>> page 22 (schematics of the rzusbstick).
>>>
>>> Difference between atusb and rzusbstick(rzusb) is mainly the at86rf231
>>> vs at86rf230 one. The rzusb contains the at86rf230 which is a little bit
>>> hard to deal with it (and has a huge errata inside the datasheet).
>>> Nevertheless with small schanges the atusb firmware can run now on the
>>> rzusb. The rzusb contains also a bigger mcu, so we can maybe cache more
>>> pdus for receive handling.
>>>
>>> To compile the rzusb firmware call:
>>> make NAME=rzusb
>>>
>>> this will generate the rzusb.bin
>>>
>>> then call the programmer (in my case avrdude):
>>> avrdude -P usb -c dragon_jtag -p usb1287 -U flash:w:rzusb.bin
>> Is there any chance we can get the DFU part of the atusb firmware also
>> running on the rzusb? Sure, it would only work after the initial loading but
>> updating would be more convenient without the need of a dedicated programmer
>> cable. Nothing of priority, just thinking out loud here.
>>
> Using DFU is possible. On the avr device exists room for Bootloader and
> Application code. I need to figure out how this space is set in the atusb.
>
> This setting is done by a fuse setting (BOOTSZ bits), I really don't
> like to set fuse bits when I do have one rzusb only. :-) Maybe I can get
> some more from the same source where I get the current one.
>
> But then I think running DFU in the bootloader section should be
> possible, maybe without change if we can do exact bootloader space like
> the atusb. Currently this is also why we don't moving the interrupt vectors
> in case of rzusb build of atusb firmware.

Fair enough. No a high priority task anyway. Getting it working fine 
first is more important. I just think that in long term it would be more 
convenient to update using DFU instead of avrdude. But this really can wait.

>>> NOTE: currently there is no chance (I suppose) to ensure that the atusb
>>> receive the correct firmware, so don't try to flash the atusb with the
>>> rzusb firmware! Also the vendor and product id is the same.
>> Actually there is some logic inside dfu-util which could handle this.
>> Firmware wise we don't check as far as I know.
>>
>> With the 0.2 atusb release I added the DFU suffix which has the vendor and
>> product id coded inside the suffix of the firmware to validate if we flash
>> to the correct device and abort if not.
>>
>> This obviously clashes with re-using same vendor and product ID for rzusb.
>> Something we should avoid anyway as they are two different devices. It
>> should be no problem to get another product id for rzusb (vendor stay same
>> as atusb). Werner should know how the "USB registry" of Qi hardware works.
>> Most likely a simple text file or wiki page.
>>
>> That way we get a new product id for the firmware image build for rzusb and
>> are able to verify the flashing with DFU. Adding the new product id to the
>> driver table in the atusb driver is easy enough. What so you think?
>>
>>
>>> This currently a RFC, it's a quick hack and I think we should update
>>> more the documentation to support the rzusb.
>> General comment as Werner already stated. Less ifdef's :)
>>
>> Try to factor out the parts which are different and have different init
>> calls for example. Some ifdef's will always stay but reducing them would
>> already help.
>>
> ok. I will clean it up. Then I would be happy if I can upload a
> "experimental" firmware on wpan.cakelab.org.

Yes, that sounds like a good plan.
>> regards
>> Stefan Schmidt
>>
>>> Signed-off-by: Alexander Aring <alex.aring@gmail.com>
>>> Cc: Stefan Schmidt <stefan@osg.samsung.com>
>>> Cc: Werner Almesberger <werner@almesberger.net>
>>> ---
>>>   atusb/fw/Makefile    |  6 ++++++
>>>   atusb/fw/atusb.c     |  2 ++
>>>   atusb/fw/board.c     | 24 +++++++++++++++++++++---
>>>   atusb/fw/board.h     | 30 +++++++++++++++++++++++++++++-
>>>   atusb/fw/board_app.c | 18 ++++++++++++++++--
>>>   atusb/fw/mac.c       | 34 +++++++++++++++++++++++++---------
>>>   atusb/fw/spi.c       | 29 ++++++++++++++++++++---------
>>>   atusb/fw/usb/atu2.c  | 15 +++++++++++++++
>>>   8 files changed, 134 insertions(+), 24 deletions(-)
>>>
>>> diff --git a/atusb/fw/Makefile b/atusb/fw/Makefile
>>> index fb7d9a4..4153859 100644
>>> --- a/atusb/fw/Makefile
>>> +++ b/atusb/fw/Makefile
>>> @@ -18,7 +18,13 @@ CFLAGS = -g -mmcu=$(CHIP) -DBOOT_ADDR=$(BOOT_ADDR) \
>>>   	 -Wall -Wextra -Wshadow -Werror -Wno-unused-parameter \
>>>   	 -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes
>>> +ifeq ($(NAME),rzusb)
>>> +CHIP=at90usb1287
>>> +CFLAGS += -DRZUSB
>>> +else
>>>   CHIP=atmega32u2
>>> +CFLAGS += -DATUSB
>>> +endif
>>>   HOST=jlime
>>>   BOOT_ADDR=0x7000
>>> diff --git a/atusb/fw/atusb.c b/atusb/fw/atusb.c
>>> index f526844..1f65d53 100644
>>> --- a/atusb/fw/atusb.c
>>> +++ b/atusb/fw/atusb.c
>>> @@ -37,11 +37,13 @@ int main(void)
>>>   	usb_init();
>>>   	ep0_init();
>>> +#ifdef ATUSB
>>>   	timer_init();
> I don't know why this timer runs on atusb. This is maybe useful for
> timing measures, but currently this increments a uint64_t inside some
> timer isr. I don't think that is really necessary to have some system
> clock. This will increase overhead when doing atusb main tasks.

Maybe its a leftover from some debugging or such? Werner would know I think.
>>>   	/* move interrupt vectors to 0 */
>>>   	MCUCR = 1 << IVCE;
>>>   	MCUCR = 0;
>>> +#endif
>>>   	sei();
> ...
>>> -
>>> +#ifdef ATUSB
>>>   	spi_begin();
>>>   	spi_send(AT86RF230_REG_WRITE | REG_TRX_CTRL_0);
>>>   	spi_send(CLKM_CTRL_8MHz);
>>>   	spi_end();
>>> +#endif
>>> +#ifdef RZUSB
>>> +	spi_begin();
>>> +	spi_send(AT86RF230_REG_WRITE | REG_TRX_CTRL_0);
>>> +	spi_send(0x10);
>>> +	spi_end();
>>> +
> This produdes that the at86rf230 will do no clock at CLKM ping but I saw
> in the rzusb schematic that this is connected to some clock source of
> AT90USB128x. But it's also connected to an 8 Mhz osc. I don't know the
> electrical things what they did there, but getting the clock from
> at86rf230 it's much cleaner clock source I think.
>
> I lookup the contiki code, so far I see, they disable the pin. I already
> tried to run with a 8Mhz clock and there no much changes, both works.
> :-)
>

ok
>>> +	/* TX_AUTO_CRC_ON, default disabled */
>>> +	spi_begin();
>>> +	spi_send(AT86RF230_REG_WRITE | 0x05);
>>> +	spi_send(0x80);
>>> +	spi_end();
> I move this out of clkm setting, it's just a hack.

Good.

I looked around to find places to get a rzusb dongle the best offer with 
stock I found is this:
http://www.digikey.de/product-search/de?vendor=0&keywords=ATAVRRZUSBSTICK

Is this reasonable? Thinking about getting one to have it for testing.

regards
Stefan Schmidt

  reply	other threads:[~2015-06-01 14:35 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-24 12:37 [RFC ben-wpan] atusb: fw: add support for rzusbstick Alexander Aring
2015-05-27 10:04 ` Stefan Schmidt
2015-05-27 14:46   ` Werner Almesberger
2015-06-01 13:38   ` Alexander Aring
2015-06-01 14:35     ` Stefan Schmidt [this message]
2015-06-01 14:42       ` Alexander Aring
2015-06-01 14:50         ` Stefan Schmidt
2015-06-01 15:17     ` Werner Almesberger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=556C6D96.9010007@osg.samsung.com \
    --to=stefan@osg.samsung.com \
    --cc=alex.aring@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-wpan@vger.kernel.org \
    --cc=werner@almesberger.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.