Menu

We received your feedback.

Dan
2013-07-18
2013-07-22
  • Dan

    Dan - 2013-07-18

    Dear Edorul. and All.

    Mr.Senshu Professor of Japan was please to introduce a bulletin board of their own.

    It is the exchange at that time.

    Because it is thought to be a reference in the future, it will be posted.

    Original page
    http://www-ice.yamagata-cit.ac.jp/forum/viewtopic.php?t=1112

    Mr.Senshu (Professor at yamagata-cit.ac) wrote.

    Tiny AVR / PIC Bootloader + is the AVR BootLoader both correspondence and PIC.

    It seems to have been published at the end of January of 2013, but did not know until today.

    PIC is the center Judging from the support situation, PIC32MX also longer supported.

    GUI or uploader that runs on Windows, the source of the microcomputer are also disclosed all.

    Because there is such as a circuit diagram and the hardware configuration, please use the person you are interested.

    AVR microcontrollers and PIC Micro's available from the same tool it is nice.


    Me

    The Ri Do introduce the Tiny AVR / PIC Bootloader, thank you very much.

    My name is Dan of the support member.

    For part of AVR(ATTINY) of Tiny AVR / PIC Bootloader, will be supplementary explanation slightly.

    1. Difference between PIC version
       Interrupt vector to the PIC will start at 0x0004, but it starts from 0x0001 in AVR(ATTINY).
      Fortunately, program memory area the AVR(ATTINY) Since it has circulated to the lowest address from the most significant address, one word RJMP instruction by letting size minute jump of the bootloader in the negative direction from the reset vector 0x0000 in I have made it possible to jump to the bootloader.

    To Force copy in four words the beginning of the boot loader area of 0x0000 ~ 0x0003 source code, it had been the outlet of the boot loader This is a PIC version, boot loader so as to meet the one 3 AVR(ATTINY) supports the following code at the outlet of the changes.

    (1) 0x0000 If the instruction RJMP
     Replace the IJMP instruction by analyzing the jump destination of RJMP instruction. (3 words)
     (2) 0x0000 If the instruction RCALL
     Replace the ICALL instruction by analyzing the jump destination of RCALL instruction. (3 words) then jump to 0x0001 Force (1 word)
    (3) Instruction Other
     Then copy code from 0x0000 (one word), then jump to 0x0001 Force (3 words)

    With or without the interrupt used by the PIC version, you had to write the jump code to the user program in a region of 0x0000 ~ 0x0003 source code, by substitution of the above code, you do not have this restriction in AVR(ATTINY) .

    2. Processing of EEP file
     If the EEPROM write Tiny AVR / PIC Bootloader is checked, it is written to EEPROM contents of the EEP file.
    Host will write the EEPROM is considered the contents of the EEP file has been placed (of PIC16F) from 0x2100.

    Since We have provided a forum to http://sourceforge.net/p/tinypicbootload/discussion/, you would appreciate by, for example, request boot loader development, bug reports.


    Mr.Senshu (Professor at yamagata-cit.ac) wrote.

    Mr. Dan, nice to meet you. And, Thank you for the interesting commentary.

    To take advantage of the Bootloader, it is necessary to write the firmware once, programmer of AVR and PIC is required.

    In this site, we place the tools available to such writing.

    Some it is determined that there is a portion out of the GPL, is limited to trial.
    those that intent is not understood Many, I am regret.

    I think the thing that Dan's has been addressed, that you have to understand its features and attractive is important.

    I think "Tiny AVR / PIC Bootloader" and he characterized to be able to use the BootLoader any MCU that it does not take into account the use of BootLoader, but are listed below the desired personal.

    1. In the tool PC side, I realize writing itself BootLoader.

    2. The information of Fuse AVR  (This is the information you will need to program creation) that you can check.

    3. Enhance Support MCU (USB built-in MCU and Mega also supported).

    4. If you can also write EEPROM in the [Write Flash] button, [Write] button is appropriate.

    5. To allow the registration of Hex File in the drop of HEX file.

    1. To enable the HEX file specified from Command line (Wildcard characters support).

    7. Add the Help function.

    8. Of the start button Terminal software (In order to make efficient use of COM port)

    Many of these is the ability to avrdude-GUI version of YCIT is equipped.

    ---

    In Japan, it can be seen that there are those who participate in sourceforge tools microcomputer-related, it became very happy.

    Given that have a large number of users of the Arduino also those who do not know the AVR microcontroller, completeness of the tool is very important, it is the matter of mandatory to spread.

    In the future, please efforts to enhance the degree of completion.

    I am paying attention to the trend.


    Best regards,
    Dan

     

    Last edit: Dan 2013-07-18
  • edorul

    edorul - 2013-07-18

    Hello Dan!

    Thanks a lot for the informations! These are good news as it seems that "Tiny AVR/PIC Bootloader" is utilised by other people than just you and me ;-)

    I've read the enhancements Pr. Senshu has told you about:
    1- It could be done by using a programmer (like "Pickit3") with command line from "Tiny AVR/PIC Bootloader". But, is it really usefull?
    2- I'm not sure to have understood. Does it mean to display the AVR fuses or program them? If it's programming them, don't you think that people can destroy the bootloader by changing clock source, PLL, etc...?
    3- I do agree. I plan USB connection for PIC32, but not for other PIC as the bootloader firmware size will be very big. I'm doing some tests with a PIC32MX460F512L, but I've got a bug that I really don't understand :-(
    4- It's done. [Write Flash] is became [Write Device]
    5- Very good idea. I'll try to do this.
    6- Command line already exists in "Tiny AVR/PIC Bootloader", but it's a good idea to use wildcards.
    7- Yes we must... or at least finish the documentation.
    8- I really don't understand.

    I've seen that you've planned to create bootloader for ATmega... Good luck ;-) But don't spend too much time if you don't plan to use ATmega for your own need.

    Best reagrds,
    Edorul

    PS: in the "about" tab of the PC program how do you want I mention your name? "Dan", "Bequest333", your real name, etc...? And do you want I mention your e-mail, web-site, etc...?
    PS2: I'll shortly post a new version with your new firmwares.
    PS3: Thanks again for the AVR support as it's a great improvement to "Tiny (PIC) Botloader" :-)

     

    Last edit: edorul 2013-07-18
  • Dan

    Dan - 2013-07-19

    Dear Edorul.

    Although it is review the Credit

    by Edorul(edorul@free.fr)

    Support members
    Dan(Japan)

    How about in this.

    I hope that the support members increase future.

    Best reagrds,
    Dan

     
  • edorul

    edorul - 2013-07-19

    Hello Dan!

    I'm sorry but I disagree with you, because you're far more than just a support member: you've developped firmwares for more than 50 devices (amont them, devices without UART - I was believing that it was impossible) and you've ported TinyBootloader to AVR! So I consider you as co-developper of "Tiny AVR/PIC Bootloader".
    But, if you really want I mention you as a "support member", I'll do it.

    Don't you want I put your web site address as it could help some japanese readers?

    About Pr. Senshu commentaries:
    - I've added drag and drop capability.
    - PIC32 bootloader firmware with USB transfert is now working, but it's very big (24kB!).

    Best regards,
    Edorul

     
  • Dan

    Dan - 2013-07-20

    Dear Edorul.

    I started the evaluation of ATMEGA at (v0.7.0.2).

    I created a beta version of ATMEGA328P based on the source of ATTINY2313A.

    I can write to the flash, but can not write to the EEPROM.

    Transfer to the EEPROM does not seem to be done. (Please refer to the log files.)

    Difference of ATMEGA328P and ATTINY2313A.

    ATTINY2313A FLASH=0x0400,EEPROM=128
    ATMEGA328P FLASH=0x4000,EEPROM=1024

    I am sure that can be done successfully writing to the EEPROM of up to 512 bytes in ATTINY861A.

    Best reagrds,
    Dan

    PS,
    I respect your feelings.
    Although I was good if I can use the "C" a little more... orz
    Let's go in France Japan collaboration. (^_^;)

     
  • edorul

    edorul - 2013-07-20

    Hello Dan!

    This will be a great collaboration :-)

    I think that the EEPROM problem come from the PC side, because "TinyBootloader+" doesn't even try to write the ".eep" file. In "transfertHexToArray" function the "picEEPROM" array isn't filled by ".eep" values, because it's only done when address is superior to Max Flash Memory. But for ATmega368P Flash=0x4000w=0x8000B and in the code there is:

    if (selectedPicInfos.eepromflag == EEP_FILE_EXISTS)
        address = 2*address + 0x4200;
    

    which is lower than the ATmega368P Max Flash Memory (0x8000).
    You may need to do something like:

    if ((selectedPicInfos.eepromflag == EEP_FILE_EXISTS)&&(selectedPicInfos.family == "#A"))
        address = 2*address + 0x4200;
    if ((selectedPicInfos.eepromflag == EEP_FILE_EXISTS)&&(selectedPicInfos.family == "#B")) // for ATmega family
        address = 2*address + 0x8200; // 0x8200 is just an example, as I don't know the real EEPROM address for ATmega
    

    I've thought about something else: we will have a problem with the remaining free "ID codes" for new devices. So when a "device check" is done at the start of the bootloading, the microcontroler could send "0xID_code 0xFamily" instead of "0xID_code 0x4B". By this way we could have 256 different devices for every family.
    Do you think it's usefull to do this, or we have enough free "ID codes"?

    Best regards,
    Edorul

    PS: I've uploaded a new version of "TinyBootloader" in case you need to do some modifications for ATmega devices.

     
  • Dan

    Dan - 2013-07-20

    Dear Edorul.

    Thank you very much for reply.

    Problem with the remaining free ID codes

    Changing the ID code from the host side claudiu.chiculita was implemented,
    I think that it is inconvenient because the user is required to distinguish each time the PIC / AVR.

    My suggestion is a revival of IdSoftVer that are commented out in the source of the PIC bootloader.

    Changed to 16 bytes only ID code of the AVR.
    Upon receiving the code for AVR, the host receives a 1-byte extra.

    IdTypePIC: ----> Distinction between AVR and PIC
    IdSoftVer: ----> The name change to IdTypeAVR

    For example, if you fixed to the 0xF1 IdTypePIC the AVR
    +------------+------------+------------+
    | Device | IdTypePIC | IdTypeAVR |
    +------------+------------+------------+
    | 10F322 | 0x11 | |
    +------------+------------+------------+
    | TINY13A | 0xF1 | 0xF1 |
    +------------+------------+------------+
    | TINY2313A | 0xF1 | 0xF2 |
    +------------+------------+------------+

    Efficient, to embed the IdTypeAVR without resize easy code of AVR.

    Best regards,
    Dan

     
  • Dan

    Dan - 2013-07-21

    Dear Edorul.

    Thank you for advice very accurate.

    I was successful in ATMEGA !!!

    Test program was also operate normally.

    There was an 0x10200 to account for ATMEGA64 address.

    I attach the log and the modified Form1.cs.

    I have shown in the "//@n" changes to my. (8 places)

    $FF, #B, ATMEGA 328P, $8000, 1024, 264, 128,

    I have tested under the above conditions.

    There is no change of the bootloader.(132byte)

    Many thanks.

    Best regards,
    Dan

     

    Last edit: Dan 2013-07-21
  • edorul

    edorul - 2013-07-21

    Hello Dan!

    I knew that ATmega won't resist you! Congratulations :-) orn (<- I like this, thanks for the discover ;-) )

    About free ID codes, I haven't well explained my thoughts: I don't want to add an extra byte, but just replace 0x4B (='K') by the family letter.
    Here is an example coming from PIC16F886:
    original code:

    ;wait for computer
        call    Receive         
        sublw   0xC1                ;Expect C1
        skpz
        goto    way_to_exit
        SendL IdTypePIC             ;PIC type
        ;SendL IdSoftVer            ;firmware ver x
    MainLoop
        clrf    STATUS              ;bank0
        SendL 'K'
    mainl
        clrf    crc
        ; etc...
    

    modified code:

        ;wait for computer
        call    Receive         
        sublw   0xC1                ;Expect C1
        skpz
        goto    way_to_exit
        SendL IdTypePIC             ;PIC type
        ;SendL IdSoftVer            ;firmware ver x
    MainLoop
        clrf    STATUS              ;bank0
        SendL 'B' ; send 'B' and not 'K' because it's for a "B" family device
    mainl
        clrf    crc
        ; etc...
    

    But, AVR families' name must be modified in order to be only one char long. "#A" and "#B" will become "1" and "2", so to determine if it's an AVR or PIC device:

    if (selectedPicInfos.family.Contains("#")) // then it's AVR family
    if (!selectedPicInfos.family.Contains("#")) // then it's PIC family
    

    will become:

    if (selectedPicInfos.family < "A") // then it's AVR family
    if (selectedPicInfos.family >= "A") // then it's PIC family
    

    Furthermore, "K" must never be used for a family name. By this way, we won't need to modify old bootloader firmwares! When a device answer for example 0x26 0x4B (old type answer):

    // in "checkPIC" function
    serBuffer[0] = (byte)serialPort.ReadByte(); // ID code
    serBuffer[1] = (byte)serialPort.ReadByte(); // Family
    if (serBuffer[1] == 0x4B) // old firmware type, 'K' instead of 'family'
        if (serBuffer[0] < 0x40)
            selectedPicInfos.family = "B"
        else if (serBuffer[0] < 0x70)
            selectedPicInfos.family = "C"
        else.................
    else // new firmware type
        selectedPicInfos.family = Char.ConvertFromUtf32(serBuffer[1]);
    

    I hope you like this solution ^_^

    Best regards,
    Edorul

     
  • Dan

    Dan - 2013-07-21

    Dear Edorul.

    The very good if this method, changes in the source code, so need a minimum indeed.

    Compatible with the firmware of the conventional PIC will also be guaranteed.

    I agree to a method of your proposal.

    Best regards,
    Dan

     
  • Dan

    Dan - 2013-07-21

    Dear Edorul.

    There was a mistake in the previous post two.

    ATMEGA256 existed.

    0x40200 is adequate EEPROM address of ATMEGA.

    Correct to apologize.

    Best regards,
    Dan

     
  • edorul

    edorul - 2013-07-21

    Hello Dan!

    It's OK. But I've changed "0x40200" to "0x100200", if one day there will be 512kB or even 1MB ATmega (who knows?).

    I've also modified everything I told you about previously (look at the readme.txt).

    Attached to this post the new PC software, if you want to test it.

    Have a good week :-)
    Edorul

     
  • Dan

    Dan - 2013-07-22

    Dear Edorul.

    Thank you very much v0.8.0.

    There is a slight bug, I Fixed.(//@1,//@2)

    I have tested in ATMEGA328P.

    1.ID=$EE,$32
    $FF, 2, ATMEGA 328P, $8000, 1024, default, default,
    Operate normally.

    Check Device...
    Open COM1 serial port
    Device answer: no answer...
    Device answer: no answer...
    Device answer: no answer...
    Device answer: 0xFF 0x32='2'
    byte OK, now check ID-code and Family...
    idCode = $17
    family = 2
    description = ATMEGA 328P
    flash mem = 32768 bytes
    EEPROM mem = 2048 bytes
    Bootloader size = 264 bytes
    Transfert block size = 128 bytes
    Found: ATMEGA 328P
    Close COM1 serial port

    2.ID=$17,$32
    $17, 2, ATMEGA 328P, $8000, 1024, default, default,
    Operate normally.

    Check Device...
    Open COM1 serial port
    Device answer: no answer...
    Device answer: no answer...
    Device answer: no answer...
    Device answer: 0x17 0x32='2'
    byte OK, now check ID-code and Family...
    idCode = $17
    family = 2
    description = ATMEGA 328P
    flash mem = 32768 bytes
    EEPROM mem = 2048 bytes
    Bootloader size = 264 bytes
    Transfert block size = 128 bytes
    Found: ATMEGA 328P
    Close COM1 serial port

    3.However, errors out with PIC12F752 you are using the same number.

    $17, 2, ATMEGA 328P, $8000, 1024, default, default,
    $17, B, 12F 752, $800, 0, 232, 32,

    Check Device...
    Open COM1 serial port
    Device answer: no answer...
    Device answer: no answer...
    Device answer: 0x17 0x4B='K'
    no answer...
    Close COM1 serial port

    Best regards,
    Dan

     

    Last edit: Dan 2013-07-22
  • edorul

    edorul - 2013-07-22

    Hello Dan!

    Thanks for the tests!!!

    I've modified the bug with the PIC12F752 (it was a problem with a null string).
    I've modified //@2 a little for future firmwares of PIC devices.

    Best regards,
    Edorul

     
  • Dan

    Dan - 2013-07-22

    Dear Edorul.

    I went all well !!!

    Thanks a lot.

    Sample program of the two will also operate normally.

    I want to change the ID code of AVR boot loader,
    Are you sure you want it as follows?

    $F1 -> $11+'1'
    $F2 -> $12+'1'
    $F3 -> $13+'1'
    $F4 -> $14+'1'
    $F5 -> $15+'1'
    $F6 -> $16+'1'

    $FF -> $2X+'2'
    I think consideration, ATmega other have been examined,
    but now you want to notation as follows.

    ;$21, B, 16F w/1Kw flash & 0B EEPROM, $800, 0, default, default,
    ;$21, B, 16F w/1Kw flash & 64B EEPROM, $800, 64, default, default,
    ;$21, B, 16F w/1Kw flash & 128B EEPROM, $800, 128, default, default,
    ;$21, B, 16F w/2Kw flash & 0B EEPROM, $1000, 0, default, default,
    ;$21, B, 16F w/2Kw flash & 64B EEPROM, $1000, 64, default, default,
    ;$21, B, 16F w/2Kw flash & 128B EEPROM, $1000, 128, default, default,
    ;$21, B, 16F w/2Kw flash & 256B EEPROM, $1000, 256, default, default,
    ;$21, B, 16F w/4Kw flash & 0B EEPROM, $2000, 0, default, default,
    ;$21, B, 16F w/4Kw flash & 128B EEPROM, $2000, 128, default, default,
    ;$21, B, 16F w/4Kw flash & 256B EEPROM, $2000, 256, default, default,
    ;$21, B, 16F w/8Kw flash & 0B EEPROM, $4000, 0, default, default,
    ;$21, B, 16F w/8Kw flash & 256B EEPROM, $4000, 256, default, default,

    Best regards,
    Dan

     

    Last edit: Dan 2013-07-22
  • edorul

    edorul - 2013-07-22

    Hello again!

    I have no preference. You can use ID code and notations you feel the more convenient for you, I trust you. But remember, if you use "$Fx -> $1x+'1'" you'll need to modify your previous AVR firmwares (send '1' instead of 'K').

    Best regards,
    Edorul

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.