someone42 / hardware-bitcoin-wallet

A minimal Bitcoin wallet intended for embedded devices
BSD 2-Clause "Simplified" License
151 stars 44 forks source link

Making AVR #30

Closed tholum closed 11 years ago

tholum commented 11 years ago

I am getting an error avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -DAVR -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wextra -Wconversion -Wa,-adhlns=adc.o -std=gnu99 -MMD -MP -MF .dep/hardware-bitcoin-wallet.elf.d adc.o eeprom.o lcd_and_input.o main.o strings.o usart.o ../aes.o ../baseconv.o ../bignum256.o ../ecdsa.o ../endian.o ../hash.o ../hmac_sha512.o ../messages.pb.o ../p2sh_addr_gen.o ../pbkdf2.o ../pb_decode.o ../pb_encode.o ../prandom.o ../ripemd160.o ../sha256.o ../stream_comm.o ../transaction.o ../wallet.o ../xex.o --output hardware-bitcoin-wallet.elf -Wl,-Map=hardware-bitcoin-wallet.map,--cref -lm ../p2sh_addr_gen.o: In function generateMultiSigAddressInternal': /home/tholum/hardware-bitcoin-wallet/avr/../p2sh_addr_gen.c:195: undefined reference todisplayAddress' collect2: ld returned 1 exit status make: *\ [hardware-bitcoin-wallet.elf] Error 1

I ran make under the main directory, then under avr any idea's?

someone42 commented 11 years ago

The AVR port hasn't been maintained in a while (except for some codebase-wide changes). I stopped maintaining it when the firmware binary could no longer fit in my ATmega328. At time of writing, you will need an AVR with at least 64 KB of flash.

someone42 commented 11 years ago

Hi,

I've updated the AVR port to include a dummy displayAddress() function (it isn't ever used anyway). It should build (run make in avr directory) now. Keep in mind that I consider the AVR port deprecated for the following reasons:

However, if you are interested in the AVR port, I can help you. The tester in avr/tester is outdated; would you like me to update it?

On Wed, Apr 10, 2013 at 9:14 AM, tholum notifications@github.com wrote:

I am getting an error avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -DAVR -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wextra -Wconversion -Wa,-adhlns=adc.o -std=gnu99 -MMD -MP -MF .dep/hardware-bitcoin-wallet.elf.d adc.o eeprom.o lcd_and_input.o main.o strings.o usart.o ../aes.o ../baseconv.o ../bignum256.o ../ecdsa.o ../endian.o ../hash.o ../hmac_sha512.o ../messages.pb.o ../p2sh_addr_gen.o ../pbkdf2.o ../pb_decode.o ../pb_encode.o ../prandom.o ../ripemd160.o ../sha256.o ../stream_comm.o ../transaction.o ../wallet.o ../xex.o --output hardware-bitcoin-wallet.elf -Wl,-Map=hardware-bitcoin-wallet.map,--cref -lm ../p2sh_addr_gen.o: In function generateMultiSigAddressInternal': /home/tholum/hardware-bitcoin-wallet/avr/../p2sh_addr_gen.c:195: undefined reference todisplayAddress' collect2: ld returned 1 exit status make: *\ [hardware-bitcoin-wallet.elf] Error 1

I ran make under the main directory, then under avr any idea's?

— Reply to this email directly or view it on GitHubhttps://github.com/someone42/hardware-bitcoin-wallet/issues/30 .

tholum commented 11 years ago

if it is to large to fit onto an ATmega328 I might have to re-think my idea a bit, and the 23 second's does seam like to much, You mentioned arm, do you think it would work on a beaglebone? http://beagleboard.org/bone

On Wed, Apr 10, 2013 at 7:42 AM, Chris Chua notifications@github.comwrote:

Hi,

I've updated the AVR port to include a dummy displayAddress() function (it isn't ever used anyway). It should build (run make in avr directory) now. Keep in mind that I consider the AVR port deprecated for the following reasons:

  • I ran out of flash space on my ATmega328.
  • I was running out of RAM.
  • Signing required too much time: ~ 23 s. Even with hand-optimised assembly, I estimate that it could be reduced to ~ 3 s, which is still too long.
  • 32 bit ARM/PIC32 chips have comparable costs to high-end AVRs while being much more powerful.

However, if you are interested in the AVR port, I can help you. The tester in avr/tester is outdated; would you like me to update it?

On Wed, Apr 10, 2013 at 9:14 AM, tholum notifications@github.com wrote:

I am getting an error avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -DAVR -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wextra -Wconversion -Wa,-adhlns=adc.o -std=gnu99 -MMD -MP -MF .dep/hardware-bitcoin-wallet.elf.d adc.o eeprom.o lcd_and_input.o main.o strings.o usart.o ../aes.o ../baseconv.o ../bignum256.o ../ecdsa.o ../endian.o ../hash.o ../hmac_sha512.o ../messages.pb.o ../p2sh_addr_gen.o ../pbkdf2.o ../pb_decode.o ../pb_encode.o ../prandom.o ../ripemd160.o ../sha256.o ../stream_comm.o ../transaction.o ../wallet.o ../xex.o --output hardware-bitcoin-wallet.elf -Wl,-Map=hardware-bitcoin-wallet.map,--cref -lm ../p2sh_addr_gen.o: In function generateMultiSigAddressInternal': /home/tholum/hardware-bitcoin-wallet/avr/../p2sh_addr_gen.c:195: undefined reference todisplayAddress' collect2: ld returned 1 exit status make: *\ [hardware-bitcoin-wallet.elf] Error 1

I ran make under the main directory, then under avr any idea's?

— Reply to this email directly or view it on GitHub< https://github.com/someone42/hardware-bitcoin-wallet/issues/30> .

— Reply to this email directly or view it on GitHubhttps://github.com/someone42/hardware-bitcoin-wallet/issues/30#issuecomment-16171573 .

someone42 commented 11 years ago

Hi,

On Wed, Apr 10, 2013 at 11:10 PM, tholum notifications@github.com wrote:

if it is to large to fit onto an ATmega328 I might have to re-think my idea a bit, and the 23 second's does seam like to much, You mentioned arm, do you think it would work on a beaglebone? http://beagleboard.org/bone

The beaglebone is much, much more powerful than any of the microcontrollers I was targeting. It is capable of running Linux; for comparison, all the code for the AVR, LPC11Uxx and PIC32 ports are "bare-metal" (no operating system).

You could probably get Electrum running on the beaglebone. Then you would have the advantage of a much nicer interface. It is definitely feasible to write a beaglebone port, but it would involve implementing all the platform-specific functions described in hwinterface.h. The port would also be very dependent on the display/input devices used.

On Wed, Apr 10, 2013 at 7:42 AM, Chris Chua notifications@github.comwrote:

Hi,

I've updated the AVR port to include a dummy displayAddress() function (it isn't ever used anyway). It should build (run make in avr directory) now. Keep in mind that I consider the AVR port deprecated for the following reasons:

  • I ran out of flash space on my ATmega328.
  • I was running out of RAM.
  • Signing required too much time: ~ 23 s. Even with hand-optimised assembly, I estimate that it could be reduced to ~ 3 s, which is still too long.
  • 32 bit ARM/PIC32 chips have comparable costs to high-end AVRs while being much more powerful.

However, if you are interested in the AVR port, I can help you. The tester in avr/tester is outdated; would you like me to update it?

On Wed, Apr 10, 2013 at 9:14 AM, tholum notifications@github.com wrote:

I am getting an error avr-gcc -mmcu=atmega328p -I. -gdwarf-2 -DF_CPU=16000000UL -DAVR -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wextra -Wconversion -Wa,-adhlns=adc.o -std=gnu99 -MMD -MP -MF .dep/hardware-bitcoin-wallet.elf.d adc.o eeprom.o lcd_and_input.o main.o strings.o usart.o ../aes.o ../baseconv.o ../bignum256.o ../ecdsa.o ../endian.o ../hash.o ../hmac_sha512.o ../messages.pb.o ../p2sh_addr_gen.o ../pbkdf2.o ../pb_decode.o ../pb_encode.o ../prandom.o ../ripemd160.o ../sha256.o ../stream_comm.o ../transaction.o ../wallet.o ../xex.o --output hardware-bitcoin-wallet.elf -Wl,-Map=hardware-bitcoin-wallet.map,--cref -lm ../p2sh_addr_gen.o: In function generateMultiSigAddressInternal': /home/tholum/hardware-bitcoin-wallet/avr/../p2sh_addr_gen.c:195: undefined reference todisplayAddress' collect2: ld returned 1 exit status make: *\ [hardware-bitcoin-wallet.elf] Error 1

I ran make under the main directory, then under avr any idea's?

— Reply to this email directly or view it on GitHub< https://github.com/someone42/hardware-bitcoin-wallet/issues/30> .

— Reply to this email directly or view it on GitHub< https://github.com/someone42/hardware-bitcoin-wallet/issues/30#issuecomment-16171573>

.

— Reply to this email directly or view it on GitHubhttps://github.com/someone42/hardware-bitcoin-wallet/issues/30#issuecomment-16172934 .