Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - adamoutler

16
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
Sure... that sounds good.  I use Linux, so GCC would be a good choice.  I've never generated an elf.  What's an elf?  I don't really know where to start.  I hooked up my bus pirate, Started an OpenOCD telnet server with stm32.cfg, telnetted into that server, it did nothing, it wouldn't connect is the unit supposed to be in DIO mode?  I don't really know what the next step would be.  Like I said...  I've never JTAGged anything..  What do I do?
17
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
Being that OpenOCD is the most supported for BusPirate, I'd say OpenOCD, unless URJTAG is better.  I really don't know which one I should go with.  I'm guessing OpenOCD?

I've never JTAGged anything.  I really have no clue what needs to be established for firmware upload.  I've been reading alot and it is all very confusing.
18
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
Yeah. So,  how to set it up?  What configs do I use?  How do I get it working? What do I expect to see?  How do I troubleshoot?
19
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
Yeah...  this is for that once that the users screw something up.  Im writing software to help in the future called heimdall one click, but that does not help the already screwed up devices.  Id like to get this working for people.  For just once situations.
20
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
I found this thread here: http://comments.gmane.org/gmane.comp.de ... evel/15041

it says something about the problem being 1.8V...  Well, the Bus Pirate has a VPU line for powering pullup resistors, so that should not be a problem if a 1.8V power source is used.... It seems that the hardware should be capable of the work required.... I'm just not smart enough to do it. 

I will support anyone who belives they may be able to get the Bus Pirate to JTAG a S5PC110 processor with anything in my means.

I forgot to mention....  People are selling JTAG services for $50  and a RIFF JTAG(a 1-click device) is available for $199.  The bus pirate is the best answer here.
21
OpenOCD JTAG / Re: cfg for JTAG Cortex A8?
What sense does that make for using a Bus Pirate?  I'm not trying to make money, I'm looking for a DIY method with a good open source component.  I've got hardware to work with and I'm willing to ship it to someone for help if required.  I'd like to promote both Bus Pirate and Open OCD..  The open source community caused the problems so it would only be right if the open source community can fix the problems as well...  everyone benefeits.

The processor is a HummingBird Cortext A8 with CoreSight.  model: S5PC110.
22
OpenOCD JTAG / cfg for JTAG Cortex A8?
Over on XDA-Developers.com we've seen a rash of carnage from developers recommending that new users flash improper firmware in risky ways...  Anyways... I'm trying to come up with an every man's solution.  The bus pirate is perfect for it's multi-tool capabilities and price.

I've been working on non-invasive recovery methods, but it seems that I've run out of options now.  So It's time to really look at JTAG. 

The target CPU is a Cortex A8 with CoreSight.  I've worked out the proper pinout and connectors to use here: http://forum.xda-developers.com/showthr ... ?t=1000175

I have:
A working device, a daily use device, and some guy's random brick
A bus pirate
The proper connectors worked out.

I need to get a solution for this processor though.  Which .cfg do I use?
25
Bus Pirate Support / Re: UART Mode Input Problem
The only thing you see on the output is what is sent over the TX line on the kindle and received by the RX line on the bus pirate.  If the return key is not sent by kindle, then the return key will not be seen by bus pirate.

I made a program for the Arduino mega for communications with my phone.... If you have an Arduino, this may do the trick....  It will show you every charactor being sent in hex.  then the line as it was intended to be read.  you can switch modes with the "`" key.

Code: [Select]
/*
Arduino Serial Connector
  Copyright 2011 Adam Outler

  Licensed under the I Dont Give a Fuck License, Version 1.0 (the "License");
  you may not use this file except in compliance with the License.
 
  3. Send me an email if you find this helpful
  If you're wondering where number 1 and 2 is, I don't give a fuck.
 
  -Adam Outler  adamoutler, gmail.com
 
/*
HEXOUTPUT displays a line of hex output then
a line of normal text- activated by "`"
BAUD will be the computer's baud rate and the
inital baud rate set for all devices
*/
boolean HEXOUTPUT=true;
unsigned long BAUD=115200;


//begin sketch
String MESSAGE[4]; //Hexoutput messages dumped into this string array
unsigned long SerialPrintTimer[4]={0,0,0,0}; //Serial timers off
int inByte;//byte received from serials 1,2,3

void setup() {
  Serial.begin(BAUD); //Initialize Computer baud
  setSerialBaudRate(BAUD); //Initialize Serials 1,2,3 baud
  Serial.print("Communications established");
}

/*
Loop will check if Serial(computer) has anything to
say to the Serial1(device), and then says it.  It
will also print all values from Serial1, Serial2,
and Serial3 to Serial(computer)
If HEXOUTPUT formatting is requested by pressing the
"`" key, it will display output in hex format, then
output a line of human readable text
*/
void loop() {
  if ( HEXOUTPUT ) { // if hex output is requested then use this
    hexOutputHandling();
  } else { //Serial1,Serial2, Serial3>Computer in byte format
    standardOutputHandling();
  }
  serialInputHandler();//send to Serial1 and handle special keys
  checkForUntruncatedSerial(); //timer to print serial lines in std output
}



/*
serialInputHandler reads keys comming from computer
makes decisions based on key numbers
sends output to Serial1
*/
void serialInputHandler() {
  if (Serial.available()) { //User has commanded input
    int IncommingSerial=Serial.read(); //read input to var
    //turn on/off HEXOUTPUT with the "`" key
    if (IncommingSerial == 96 ) displayMenu();
    Serial1.print(IncommingSerial, BYTE); //Send var to Serial1
  } 
}

void displayMenu(){
  Serial.println("");
  Serial.println("Main Menu");
  Serial.println("--------------------");
  Serial.println("--HEX OUTPUT--");
  Serial.println("`-toggle hex output"); //96
  Serial.println("--BAUD RATE--");
  Serial.println("a-115200");//97
  Serial.println("b-57600");//98
  Serial.println("c-38400");//99
  Serial.println("d-28800");//100
  Serial.println("e-19200");//101
  Serial.println("f-14400");//102
  Serial.println("g-9600");//103
  Serial.println("h-4800");//104
  Serial.println("i-2400");//105
  Serial.println("j-1200");//106
  Serial.println("k-300");//107
  Serial.print("Select one, press enter");
  int inkey;
  Serial.flush();
  while (inkey != 13 ){
    inkey=-1;
    if (Serial.available()) inkey=Serial.read();
    switch (inkey) {
      case 96: //`
        HEXOUTPUT=(!HEXOUTPUT);
        displayBlatentChangeMessage("HEX Output toggled");
        break;
      case 97: //a
        setSerialBaudRate(115200);
        displayBlatentChangeMessage("Baud 115200");
        break;
      case 98: //b
        setSerialBaudRate(57600);
        displayBlatentChangeMessage("Baud 57600");
        break;
      case 99: //c
        setSerialBaudRate(38400);
        displayBlatentChangeMessage("Baud 38400");
        break;
      case 100: //d
        setSerialBaudRate(28800);
        displayBlatentChangeMessage("Baud 28800");
        break;
      case 101: //e
        setSerialBaudRate(19200);
        displayBlatentChangeMessage("Baud 19200");
        break;
      case 102: //f
        setSerialBaudRate(14400);
        displayBlatentChangeMessage("Baud 14400");
        break;
      case 103: //g
        setSerialBaudRate(9600);
        displayBlatentChangeMessage("Baud 9600");
        break;
      case 104: //h
        setSerialBaudRate(4800);
        displayBlatentChangeMessage("Baud 4800");
        break;
      case 105: //i
        setSerialBaudRate(2400);
        displayBlatentChangeMessage("Baud 2400");
        break;
      case 106: //j
        setSerialBaudRate(1200);
        displayBlatentChangeMessage("Baud 1200");
        break;
      case 107: //k
        setSerialBaudRate(300);
        displayBlatentChangeMessage("Baud 300");
        break;
      case 13: //l
        return;
        break;
    }
  }
}


void displayBlatentChangeMessage(String Message){
  for (int i = 0; i < 40; i++){
    Serial.println(Message); 
  }
}

/*
checkForUntruncatedSerial reads timers put on
each serial line and if it has been greater then
the time allowed for a 0x13, then it will print the line
*/
void checkForUntruncatedSerial() {
  double time=millis();
  for ( int i = 1; i <= 3; i++){
    if ( SerialPrintTimer[i] != 0 && SerialPrintTimer[i] < time ){
      displayNormal(i);
    }
 
  }
}
 
void setSerialBaudRate(unsigned long baud){
  if ( baud == 0.00 ) baud=BAUD;
  Serial1.begin(baud);
  Serial2.begin(baud);
  Serial3.begin(baud);
}


/*
standardOutputHandling reads from Serial1
Serial2, and serial3 then outputs to computer
*/
void standardOutputHandling(){
  if (Serial1.available()) Serial.print(Serial1.read(), BYTE);
  if (Serial2.available()) Serial.print(Serial2.read(), BYTE);
  if (Serial3.available()) Serial.print(Serial3.read(), BYTE);
}


/*
hexOutputHandling reads from Serial1, Serial2,
and Serial3 then sends to displayHex function
for processing. The output is stored in an
array and displayed on 0x13, or after timer
has elapsed
*/
void hexOutputHandling(){
  if (Serial1.available()) {
    inByte = Serial1.read();
    displayHex(1); //Serial1>displayHexfunction>Computer
  }
  if (Serial2.available()) {
    inByte = Serial2.read();
    displayHex(2);//Serial2>displayHexfunction>Computer
  }
  if (Serial3.available()) {
    inByte = Serial3.read();
    displayHex(3);//Serial3>displayHexfunction>Computer
  }
}


/*
displayNormal is called at the end of a line of hexoutput
or when serialPrintTimer has elapsed. It displays the
byte format output and the serial line which originated
the transaction
*/
void displayNormal( int SerialID ){
  Serial.println("");
  Serial.print(" SERIAL");
  Serial.print(SerialID);
  Serial.println(": " + MESSAGE[SerialID]);//Serial1:Message
  MESSAGE[SerialID]="";//clear message
  SerialPrintTimer[SerialID]=0;//reset print timer
  }


 /*
 displayHex formats the hexoutput and the final message
 which is displayed when char 13 is received or the timer
 has elapsed
 */
void displayHex(int SerialID){

      SerialPrintTimer[SerialID]=millis()+ 1000;//set timer for display
      if ( inByte >= 19 ) MESSAGE[SerialID] = MESSAGE[SerialID] + " " + (char)inByte; //dump char into string
      Serial.print("|");
      Serial.print(inByte, HEX); //print character
      if ( inByte == 13 ){ displayNormal( SerialID ); }//line ending dump string onto screen
}

example:

Code: [Select]
+k�́Co., Ltd. 2006-2010
-----------------------------------------------------------

+n1stVPN      2688
+nPgsPerBlk    64
+n1stVPN      3008
+nPgsPerBlk    64
PBL found bootable SBL: Partition(4).

Main Menu
--------------------
--HEX OUTPUT--
`-toggle hex output
--BAUD RATE--
a-115200
b-57600
c-38400
d-28800
e-19200
f-14400
g-9600
h-4800
i-2400
j-1200
k-300
Select one, press enterHEX Output toggled
HEX Output toggled
HEX Output toggled
........

|D6|D1|C9|BD|B9|A5|8D|CD|81|43|6F|2E|2C|20|4C|74|64|2E|20|32|30|30|36|2D|32|30|31|30|A|D
 SERIAL1:  � � � ֽ � � � � ́ C o . ,  L t d .  2 0 0 6 - 2 0 1 0
|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|A|D
 SERIAL1:  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|A|D
 SERIAL1:
|2B|6E|31|73|74|56|50|4E|20|20|20|20|20|20|20|32|36|38|38|20|A|D
 SERIAL1:  + n 1 s t V P N              2 6 8 8 
|2B|6E|50|67|73|50|65|72|42|6C|6B|20|20|20|20|36|34|20|A|D
 SERIAL1:  + n P g s P e r B l k        6 4 
|2B|6E|31|73|74|56|50|4E|20|20|20|20|20|20|20|33|30|30|38|20|A|D
 SERIAL1:  + n 1 s t V P N              3 0 0 8 
|2B|6E|50|67|73|50|65|72|42|6C|6B|20|20|20|20|36|34|20|A|D
 SERIAL1:  + n P g s P e r B l k        6 4 
|50|42|4C|20|66|6F|75|6E|64|20|62|6F|6F|74|61|62|6C|65|20|53|42|4C|3A|20|50|61|72|74|69|74|69|6F|6E|28|34|29|2E|A|D
 SERIAL1:  P B L  f o u n d  b o o t a b l e  S B L :  P a r t i t i o n ( 4 ) .
|AB|8D|D1|C9|BD|B9|A5|8D|CD|81|43|6F|2E|2C|20|4C|74|64|2E|20|32|30|30|36|2D|32|30|31|30|A|D
 SERIAL1:  � � � � ѽ � � � � ́ C o . ,  L t d .  2 0 0 6 - 2 0 1 0
|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|2D|A|D
 SERIAL1:  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|A|D
27
Bus Pirate Support / Re: Improved Bus Pirate case sticker
[quote author="voidptr"]Can you  put CTS and RTS on UART ?
:-)


UART bridge mode that includes the CTS and RTS flow control signals. CTS is on the CS pin (PIC input from external circuit is passed to FTDI USB->serial chip). RTS is on the CLOCK pin (PIC output mirrors output from FTDI chip).[/quote]

Done.  Also adjusted size of MISO line and spacing to minimum.  With the Dangerous Prototypes logo at the bottom this case sticker now has the same dimensions as the bus pirate when printed at 42%
28
Bus Pirate Support / Re: Improved Bus Pirate case sticker
[quote author="ian"]May I please add it to svn too? We can ask seeed to make them as stickers.[/quote]
Yeah, like I said... It's unclaimed work...  take it, put your name on it, market it....  I just wanted a case sticker which was accurate and easy to read.  I got mine.
29
Bus Pirate Support / Re: Improved Bus Pirate case sticker
I think this should be the final revision for now...

Added Dangerous Prototypes name to the bottom as I did not think it was right to have SeeedStudios name on there without Dangerous Prototypes.   
Adjusted P0-P9 so they were not merged into the edges
Adjusted spacing

New printing size:
42% for sticker which covers the back
38% for paper with clear tape over the top
30
Bus Pirate Support / Re: Improved Bus Pirate case sticker
I made the change to show that this is a SeeedStudios cable.

[quote author="Sjaak"]we got some comments on the way we wrote the colors, so we'll fix it.[/quote]

You can just use mine if you'd like.  Like I said... It's not Copyright. So it's unclaimed work with the SeeedStudios name on it.

It would be nice if the Bus Pirate came with one of these on the back or something.

( ! ) Fatal error: Uncaught exception 'Elk_Exception' with message 'Please try again. If you come back to this error screen, report the error to an administrator.' in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
( ! ) Elk_Exception: Please try again. If you come back to this error screen, report the error to an administrator. in /var/www/dangerousprototypes/forum/sources/database/Db-mysql.class.php on line 696
Call Stack
#TimeMemoryFunctionLocation
10.01602459552session_write_close ( )...(null):0
20.01642591176ElkArte\sources\subs\SessionHandler\DatabaseHandler->write( )...(null):0
30.01642591952Database_MySQL->query( ).../DatabaseHandler.php:119
40.06102730712Database_MySQL->error( ).../Db-mysql.class.php:273