Shop OBEX P1 Docs P2 Docs Learn Events
Powershell script for propgcc. - Page 2 — Parallax Forums

Powershell script for propgcc.

2»

Comments

  • evanhevanh Posts: 15,091
    alatnet wrote: »
    I have the MB102 mini usb one.
    It keeps heating up really bad to the point that if i touch it, it's probably hot enough to burn or cause really bad discomfort.
    Websites like that have rubbish info on the products. Does it come with any instructions?

    My best guess is you need to lower the input voltage. Those regulators are linear mode of operation so any difference between the input voltage and the regulated voltage is pure heating loss.

    Lets say the 5 volt regulator is one of these - http://www.ti.com/lit/ds/symlink/reg1117.pdf And if the input voltage is, a wild guess of, 12 volts, then the regulator is having to drop 7 volts. This creates 1.0 Watt of heating for every 1/7 = 143 mA of current. One Watt is about all that'll handle without a heat sink. And even that will get very hot.

    Reducing the input voltage, say 6 volts, will make it a lot cooler. Or if you can use a strong USB supply, preferably from charger or hub, then that'll work by bypassing the 5 volt regulator altogether I'm guessing. I note there is jumpers to change to USB supply mode.
  • alatnetalatnet Posts: 80
    edited 2019-08-25 15:27
    5v regulator is a AMS1117 5.0.
    Have a 12v input on it.
    I think i tried a 2amp usb power brick but nothing really ran at all.
    Even tried directly on my computer, it ran but then froze after a few seconds.
  • evanhevanh Posts: 15,091
    You'll need to set the jumpers correctly for USB to be the supply. Use a short USB cable for least loss in the cable.

    Or reducing the 12 volts will work.

  • There are no headers.
    It's just plug and play.
  • evanhevanh Posts: 15,091
    Maybe the USB is auto select but is broken, we've had a few of those fail with the Prop2 testing. Dunno, it's a lot of guessing from this end without any datasheet or instruction manual, or even a definite picture of the thing.
  • If it's a picture:
    4717a78c59afe0db3ba1a1a934c894.jpg
    It's the one on the lower right behind the character lcd.
  • evanhevanh Posts: 15,091
    edited 2019-08-25 17:18
    Okay, I've found a schematic for one of the models - http://www.handsontec.com/dataspecs/mb102-ps.pdf It has the USB 5V directly connected to the output of the 5 volt regulator. So no jumpered selecting. It's a case of only connect one supply at a time.

    The 12 volt input has a plain silicon diode (1N4007) in series, which explains why they say 6.5 Volts minimum. Really should have been a Schottky diode instead.

    There is a power button that needs pressed, even for the USB supply. It's double pole, so switches both inputs on/off. The green LED will light to indicate the supply and push button are on.

  • ah, mine's a different model. It doesnt have the push button or a green led.
  • evanhevanh Posts: 15,091
    alatnet wrote: »
    It's the one on the lower right behind the character lcd.
    Oh, that's quite a lot of gear. Might be too much. It can be measured with a multimeter inline with the 5 volts.

    Maybe a good time to get a bench-top supply that replaces the MB102 and can tell you what is being used at all times, and has it's own adjustable limits.
  • alatnetalatnet Posts: 80
    edited 2019-08-25 17:46
    Hmmm. Then I might give this a try:
  • evanhevanh Posts: 15,091
    That's a good idea from a money saving view. It's not cheap to buy a 10 A bench supply normally. 3 A is the common max for cheap ones.

    However, the instructions in that video are all important. The AC cable will kill you if you aren't careful.

    See he used blue "bootlace ferals" on those demo leads into the AC plug and the fixed 12V/5A supply. That prevents accidental fraying of the copper strands at the terminals. Again, can save your life. Soldering the wire ends into a solid conductor would be an alternative but not as reliable long term. In the finished unit he uses solid core conductors instead.

    He made an important point of highlighting the green/yellow earthing wiring. This again is for your safety when operating the finished unit. Do not leave it out. It must be connected to all exposed metal of the enclosure. All AC powered equipment has this inside when exposed metal.
  • evanhevanh Posts: 15,091
    edited 2019-08-25 18:41
    And make sure you check and check again you've got the pin order correct for three pin AC plug. Get that wrong and it can be lights out for you again. There is no second chances here.

    This is actually work that requires qualified electrical worker. So teaching outside of registered educator will be illegal.

    The final thing you should be doing, that he doesn't mention, is you should be verifying the earth conductor low resistance from the earth pin to the exposed metal ... and insulation high resistance of the AC actives pins to the earth pin and exposed metal. This needs a special insulation tester.
  • evanhevanh Posts: 15,091
    All that said, you can avoid the exposed AC conductors by using an external fixed voltage supply, like a laptop power brick, instead. An 18 volt brick would work well.
  • evanhevanh Posts: 15,091
    edited 2019-08-25 19:38
    On another note: The worry, with using a switcher like this, is the level of electrical noise it might inject. The reason why all the cheap bench tops are limited to 3 amps is because that is a manageable amount for a linear regulator with a large heatsink. That way they don't have to use a switcher and risk it being too noisy.

    Expensive bench tops I think use a combination of switcher, for the bulk of the voltage control, with a linear to drop down to the final noise free regulated output. Something like a PC motherboard can de-noise a switcher by throwing large amounts of capacitors at the problem. A bench top doesn't have that luxury because it has to provide a wide adjustable current limit. This is somewhat out of my knowledge so am guessing now though.
  • alatnetalatnet Posts: 80
    edited 2019-08-25 21:32
    Ok, so, stick a pin in that for later.
    Back to propgcc.

    Trying to include the Propware SD libraries into my program, so that i can see about streaming a vgm for testing, and im getting this:
    D : \Compilers\propgcc-win\bin\propeller-elf-g++.exe : d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../
      ../../propeller-elf/lib/cmm/short-doubles\libstdc++.a(eh_personality.o): In function `.LFB78':
      At line:1 char:1
      + D : \Compilers\propgcc-win\bin\propeller-elf-g++.exe  -I . -I D : \\Compi ...
      + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          + CategoryInfo          : NotSpecified: (d:/compilers/pr...ction `.LFB78'::String) [], RemoteException
          + FullyQualifiedErrorId : NativeCommandError
       
      /home
      /teamcity/TeamCity/buildAgent/work/427a5678720f95ad/propeller-gcc/gcc4/libstdc++-v3/libsupc++/eh_personality.cc:362: 
      multiple definition of `___gxx_personality_sj0'
      D : \\Compilers\\PropWare\\share\\PropWare\lib\cmm\\libpropware.a(PropWare.cpp.obj):(.text.__gxx_personality_sj0+0x0): 
      first defined here
      d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: Propeller 
      Genesynth.elf section `.text' will not fit in region `hub'
      d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: address 0xf5fc of 
      Propeller Genesynth.elf section `.bss' is not within region `hub'
      d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: address 0xf5fc of 
      Propeller Genesynth.elf section `.bss' is not within region `hub'
      d : /compilers/propgcc-win/bin/../lib/gcc/propeller-elf/4.6.1/../../../../propeller-elf/bin/ld.exe: region `hub' 
      overflowed by 30208 bytes
      collect2: ld returned 1 exit status
    

    How big exactly is the SD card libararies?
    PropWare::SD, PropWare::FatFS, and PropWare::FatFileReader.
    I dont think it would be that big to overflow the hub ram... which is really weird...
  • It's not small, that's for sure. It's smaller than Simple's SD routines, but larger than fsrw. But if you're using CMM still, it shouldn't be overflowing by 30kB... a whole SD read/write program fits in ~26kB in LMM, and reading only fits in 21kB.

    If you send me the code again I can take a look and help figure out what taking up all that space.

  • Here it is.
    It's really wierd.
    Im using defines to basically section off testing areas, though that shouldnt inflate the code.
  • I'm not seeing the problem with the uploaded zip. I do see that there's a file missing: TrackStructs.h. But if I just delete that inclusion, it compiles fine (with my CMake script) to less than 20kB (as reported by propeller-elf-size, not the size of the file on disk).

    I'm also not seeing any real usage of the SD card, just an instantiation of the SD card driver and FAT filesystem.

    I'm looking through your PowerShell script for the first time now, trying to see if there's something there that could be causing a problem. I do notice you're actually using g++ for compiling the C++ code, instead of gcc. Since you're not using any of the C++ standard library, it shouldn't matter, but I'd recommend you compile everything with gcc. The only differences between the two are linker symbol names (doesn't matter) and the fact that g++ links against the C++ STL by default... and the Prop doesn't have space for it so you shouldn't be using it anyway :)
  • ok, so swapping to gcc + "-lm" instead of g++ still compiles.
    Dont seem to be getting any errors about file space now which is weird.
    Though getting issues with "___cxa_guard_acquire" and "___cxa_guard_release" in SPI::get_instance() for some reason.
    For the TrackStructs.h, it's pretty much the same one from https://github.com/AidanHockey5/STM32_VGM_Player_YM2612_SN76489.
    With you talking about it, i thought it would be because of it, though i have commented out the enums and variables at the bottom.
  • alatnet wrote: »
    ok, so swapping to gcc + "-lm" instead of g++ still compiles.
    Dont seem to be getting any errors about file space now which is weird.
    Though getting issues with "___cxa_guard_acquire" and "___cxa_guard_release" in SPI::get_instance() for some reason.
    For the TrackStructs.h, it's pretty much the same one from https://github.com/AidanHockey5/STM32_VGM_Player_YM2612_SN76489.
    With you talking about it, i thought it would be because of it, though i have commented out the enums and variables at the bottom.

    The guard_acquire and guard_release sounds familiar... but I don't remember what I did to resolve that. I'm not seeing any references to it in PropWare's source.

    No need to use SPI::get_instance() if you don't want to though. It's just a "shortcut" for instantiating an SPI bus (it uses a local static variable inside the get_instance() function so that you get the same SPI instance everywhere throughout your code). You can achieve the same thing by just instantiating your own SPI bus and passing that in everywhere that you need.
  • Well, that fixed that.
Sign In or Register to comment.